pascal判斷質數

時間 2022-04-18 10:45:06

1樓:況從蓉益煦

注意我的注釋(重點解釋while一段)——首先:判斷質數的標準是,某乙個數被2~該數自身平方根(取整數)一各個相除,如果被除盡了,則立即判斷不是質數。否則就是質數。

while

(k<=sqrt(j))

andnot(f)

do判斷k是達到了該數的平方根,因為範圍在2~2~該數自身平方根內;同時判斷這些數字被j除,有沒有除盡(f在這裡是乙個布林型別的判斷符號,預設是沒有除盡,表示還可以繼續迴圈)。

begin

iftrunc(j/k)=j/k

then

f:=true

沒有除盡肯定j/k是有餘數的,trunc是取整數。如果兩者相等,表示沒有餘數(除盡了),那麼顯然這個數字就不是質數了,把f設定成true。那麼not(f),對ture取反就是false,那麼打破迴圈推出,之後的zs:

=not(f);

也就是對識別符號取反——not(true):false,表示不是質數。

else

k:=k+1;

end;

2樓:翠翰學文魁

f是邏輯(布林)變數,其值只有true和false兩個,not()是庫函式,其返回值是函式引數的求反結果,如

not(ture)

=false,not(false)

=true。

function

zs(j:integer):boolean;

//函式zs的形參為整形變數j,返回值ture說明j為質數,false說明j為和數。

vark:integer;

f:boolean;

begin

f:=false;

//假定j為質數

k:=2;

// 從最小質數2開始去除

while

(k<=sqrt(j))

andnot(f)

do//

這句應該這樣的while

((k<=sqrt(j))

andnot(f))

do begin

iftrunc(j/k)=j/k

then

f:=true

//如果j能被k整除,說明j為和數。

else

k:=k+1;

end;

zs:=not(f);

//只要能被任意的k值整除,則f

=ture,not(f)

=false,就是說j為和數,反之,j為質數。

end;

PASCAL問題,Pascal問題

歷年noip。找源程式太容易了吧 pascal問題 第五題 program lsh5 vara,b,n,x,p integer t array 1.100 ofinteger begin readln n fora 1ton div2 1 dobegin x 0 p a forb a 1ton di...

pascal問題,pascal問題

這是第一題 var i,j,a,n,s,t longint begin readln a,n for i 1 to n do begin s 0 for j 0 to i 1 do begin inc s,a round exp j ln 10 end inc t,s end writeln t r...

判斷是否為質數的快速演算法,判斷乙個數是否為素數的演算法

1醉夢紅顏 判斷n是否為質數 bool isprimenumber int n if n 2 0 int sqrtn int sqrt double n bool flag true for int i 3 i sqrtn i 2 return flag 你造一張素數表,假設很大,這個應該是最笨,但...