数論-----階乗分解

指定された整数N、品質係数のN!分解階乗試験では、分解の出力は、フォームピピであることと算術の基本定理を遊泳することができます。
入力フォーマット
整数N.
出力形式
N!品質係数、総行数、ペアのパイ、cipi、CIの各ラインの分解の結果は、pciipici項目を含んで表します。出力ピピに従って順序を昇順。
データ範囲
1≤N≤1061≤N≤106
入力サンプル:
5

出力サンプル:
2. 3
。3。1
。5 1

サンプル説明
5!= 120 = 3 * 5 * 23

アイデア:

1.まず1--素数nがスクリーニングされる
列挙素数のそれぞれのn!番号

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1000010;
int primes[N], cnt;
bool st[N];
void init (int n ){
 for (int i = 2; i <= n ; i ++){
  if (!st[i])   primes[cnt ++] = i;
  for (int j = 0; primes[j] * i <= n ; j ++){
   st[primes[j] * i] = true;
   if (i % primes[j] == 0)  break;
  }
 }
} 
int main(){
 int n;
 cin >> n;
 init(n);
 for (int i = 0; i < cnt; i ++){
  int p = primes[i];
  int s = 0;
  for (int j = n; j ; j /= p)  s += j;
  printf("%d %d\n", p, s);
 }
 return 0;
}
公開された106元の記事 ウォン称賛67 ビュー5429

おすすめ

転載: blog.csdn.net/qq_45772483/article/details/104941642