模擬試題 最大質因數和

2022-05-12 10:05:29 字數 1623 閱讀 2247

最大質因數和(prime)

題目描述

定義乙個數的質因數和為它的所有質因數之和。給出n個正整數,對於每個正整數,輸出2到這個數之間所有數中質因數和最大的數的質因數和。

輸入格式

第一行乙個正整數n(n<=500000),接下來n行每行有乙個正整數ai(2<=ai<=1000000)。

輸出格式

共n行,對於每乙個ai輸出符合題意的結果。

樣例輸入

樣例輸出

解法:先生成1000000以內所有數的質因數和(利用類似篩法求素數),然後陣列s中存最大的質因數和,且有遞推式s[i]=max(s[i-1],a[i]),然後讀入,再從s中讀取

const

max=

1000000

;var

n,m,i,p,t:longint;

a,s,c:

array[2

..max]

oflongint;

b:array[2

..max]

ofboolean;

begin

assign(input,

'prime.in

');reset(input);

assign(output,

'prime.out

');rewrite(output);

fori:=2

tomax

doc[i]:=i;

//利用篩法求素數的方法,求所有數的質因數之和

fori:=2

tomax

doif

notb[i]

then

beginp:=

i;while

p<=

max

dobegin

b[p]:

=true;

c[p]:

=c[p]

divi;

a[p]:

=a[p]+i;

p:=p+

i;end

;end

else

ifc[i]

<>

1then

beginp:=

i;t:

=c[i];

while

p<=

max

dobegin

c[p]:

=c[p]

divt;

a[p]:

=a[p]+t;

p:=p+

i;end

;end;s[

2]:=a[

2];fori:=3

tomax

doif

a[i]

>

s[i-1]

then

s[i]:

=a[i]

else

s[i]:

=s[i-1

];readln(n);

fori:=1

ton

dobegin

readln(m);

writeln(s[m]);

end;

close(input);close(output);

end.

試題 演算法訓練 最大質因數

問題描述 給出n個數字,求出有最大的最大質因數的那個數 輸入格式 第一行 乙個整數n。接下來的n行,每行乙個整數a i,表示給出的那n個數字。輸出格式 第一行 乙個整數,擁有最大的最大質因數的那個數。樣例輸入436 3840 42樣例輸出 38資料規模和約定 60 的資料滿足 n 100 100 的...

C 最大質因數

1.先判斷該數是否為質數,若為質數直接輸出。2.依次判斷x 從2開始的數 是否為該數 n 的因數 3.若是因數,判斷該數是否為質數,若為質數記錄該數。若n x的結果也為質數,則此質數即為最大質因數。ps 不可以將該數的所有質因數列出 會存在超時!include using namespace std...

質因數分解(C )(求最小質因數反求最大質因數)

p1075 質因數分解 題目描述 已知正整數nn是兩個不同的質數的乘積,試求出兩者中較大的那個質數。輸入格式 乙個正整數nn。輸出格式 乙個正整數pp,即較大的那個質數。輸入輸出樣例 輸入 21 輸出 7 說明 提示 n 2 10 9 noip 2012 普及組 第一題 直接找最大質因數會超時,所以...