-
Pascal 來源:
program ex;
vari,s:integer;
boo:boolean;
beginreadln(s);
i:=2;boo:=true;
while iif boo then writeln('yes.') else writeln('no.');
end.應該是對的,如果編譯有錯誤或者演算法有問題可以問我。
-
varn,i,j:integer;
ok:boolean;
beginreadln(n);
for i:=2 to n do
beginok:=true;
for j:=2 to trunc(sqrt(i)) doif i mod j = 0 then begin ok:=false;break; end;
if ok then writeln(i) else continue;
end;end.
我直接在這裡輸入,沒有編譯,如果有什麼小錯誤自己檢查一下。[轉身,呵呵]。
-
請注意我的注釋(強調 while 段落)——首先:判斷質數的標準是將乙個數除以 2 除以該數本身的平方根,如果除以,則立即判斷它不是質數。 否則,它是乙個質數。
whilek<=sqrt(j))
andnot(f)
do 確定 k 是數字的平方根,因為範圍是數字本身的平方根內的 2 2; 同時判斷這些數字是否被j除,是否被除(f這裡是布林型判斷符號,預設是沒有除法,這意味著迴圈可以繼續)。
beginiftrunc(j/k)=j/k
thenf:=true
沒有除法可以肯定 j k 有乙個餘數,而 trunc 是乙個整數。 如果兩者相等,則表示沒有餘數(除法),則顯然該數不是質數,並將 f 設定為真。 然後 not(f),ture 的統一是假的,然後打破迴圈並啟動,然後 zs:
not(f);
也就是說,識別符號被否定 - not(true):false,這意味著它不是質數。
elsek:=k+1;
end;
-
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;
beginf:=false;
假設 j 是質數。
k:=2;從最小的質數 2 中移除。
whilek<=sqrt(j))
andnot(f)
做這句話應該是這樣的
k<=sqrt(j))
andnot(f))
do begin
iftrunc(j/k)=j/k
thenf:=true
如果 j 能被 k 整除,則 j 是總和數。
elsek:=k+1;
end;zs:=not(f);
只要它能被 k 的任何值整除,那麼 f
ture,not(f)
false,即 j 是總和數,反之亦然,j 是素數。
end;