PAT_A1059

これは、素因数分解の問題です:

後で使用するために素数までの1.まず、印刷リスト入力数がlong int型(すなわち唯一のint型である)であるため、素数テーブルの大きさは、あなたができる10 ^ 5レベルであり、21億の最大サイズ(10 ^ 10オーダー)ここで我々は唯一の首相にライン上のsqrtの範囲(10 ^ 10)= 10 ^ 5を必要とします

(2ルートモジュロNこうして又はスクリーニング方法を用いて)、以下のスクリーニング方法において使用される直接I素数テーブルを印刷することができます

数回モジュロ演算の一つ2 1、及び素因数sqrt_n範囲のために要因か否かか否かを判定し、アレイFAC構造体ファクタで結果を提示します

3.最後に、残りのnが1でないなら(モジュロのでnは常に、私たちはsqrt_n範囲内で解決することができ、nは1になります場合は、最終的には、任意の操作を必要としない)、n個の構造体要素の配列を置くしようとしていますFAC、1の順序

4.最後のステップは、今のprintfで、ライン上の印刷の形式要件に準拠しているCIN以前よりもどのように気持ちをscanf関数、COUTも快適な、それは母であるのか分かりません

 

ピット:1つの素数表2は初めからあるので、印刷、プライムサイクルはI = 2から開始する必要があります、または無限ループに陥るかを決定します

   前記第三の部分は、nが1であると判断し、nは0ではありません

書式#include <iostreamの> 
書式#include <stdio.hに> 
する#include <cmath>
 使用して 名前空間はstd;
int型の isprime [ 100005 ]。  // 0是1不是

空隙 find_prime(int型N){
     ためint型 I = 2 ; iが<= N; I ++){   // 从2开始
        場合(isprime [I] == 0 ){
             ためINT J J <= N; J = + = iがI + I){ 
                isprime [J] = 1 
            } 
        } 
    } 
} 

構造体係数{
     int型のF。
    int型のp; 
} FAC [ 20 ]。

INT メイン(){ 
    freopenは(" in.txt "" R " 、STDIN)。
    
    int型の入力を、
    scanf関数(" %のD "、および入力)。
    もし(入力== 1){ // 特殊情况为1つ 
        のprintf(" 1 = 1 " )。
        リターン 0 ; 
    } 
    INT N = 入力。
    
    INT sqrt_n = SQRT(N)。
    find_prime(sqrt_n)。

    int型のポジ= 0 ;
    以下のためにint型 I = 2 ; I <= sqrt_n; ++ I){   // 一定要从2开始
        場合(isprime [I] == 0 ){
             int型のカウント= 0 ;
            一方、(N!= 0 && N%iは== 0 ){ 
                カウント ++ 
                N / = I。
            } 
            場合(カウント!= 0 ){ 
                FAC [ポジ] .F = I。
                FAC [POSI] .P =カウント; 
                POSI ++ ; 
            } 
            であれば(N == 0 ブレーク
        } 
    } 
    もし(!N = 1){   // 不等于1つの 
        FAC [ポジ] .F = N。
        FAC [POSI] .P = 1 
    } 
    のprintf(" %d個= " 入力)。
    以下のためにint型 I = 0 ;; ++ I){
         場合(FAC [i]が.P == 0 破りますもし(!I = 0 
            のprintf(" * " ); 
        printf(" %dの" 、FAC [i]は.F)。
        もし(!FAC [i]を.P = 1 
            のprintf(" ^%d個" 、FAC [i]を.P)。
    } 
    
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/chuan-chuan/p/11490720.html