輸入任意數判斷它是否是素數,輸入任意一個數,判斷它是否是素數 free pascal

2021-12-25 08:33:52 字數 3101 閱讀 7104

1樓:匿名使用者

program sushu;

varn,i,j:integer;

begin

write('please input n=');

readln(n);

j:=0;

for i:=2 to round(sqrt(n)) doif n mod i =0 then inc(j);

if j<=1 then write('yes')else write('no');

end.

2樓:

因為互質的數最大公約數是1,只要判斷它們的最大公約數是不是1就可以了。

var a,b,i,k:integer;

begin

readln(a,b);

for i:=a downto 1 do

if b mod i=0 then k=i;

if k=1 then writeln('true')else writeln('false');

end.

3樓:匿名使用者

var n,i,s:longint;

begin read(n);

for i:=1 to n do

if n mod i=0 then s:=s+1;

if s=2 then writeln('yes')else writeln('no');

end.

4樓:天涯冰雪蘭花

老兄,如果被判斷的數不大(二十億以內)程式是很簡單的,你的書應該有,最常用的是試除法。如果數再大些,判斷就稍複雜了,資料型別用extend,它不能求模,只能用試乘法,就是用兩個變數不斷試乘(優化一下,試乘的資料不用很多的),看會不會等於被判斷的數,速度也相當快,長度達18位的數基本都能瞬間判斷完畢(此法對於長度達19位以上的數就不行了)。如果想判斷更大的數,那麼只有求助高精度計算,程式異常複雜,你恐怕沒那個耐心(我寫了一個高精度除法,程式就有100多行,我懶得去優化它,高精度判斷素數的程式可想而知,呵呵)。

5樓:匿名使用者

vars,i:integer;

begin

readln(s);

for i:=2 to trunc(sqrt(s))+1 dobegin

if s mod i=0 then begin writeln('it is not su shu!');exit;end;

write('it is su shu')end.

1不是素數

一樓的找約數太麻煩,另它是錯誤的,因為一個合數在2到它的平方根之內有時也只有一個約數,如9,在2~3之內只有一個3。

6樓:

var a.i,integer;

f:boolean;

begin

readln(a);

f:=true;

if a=0 or a=1 then f:=false;

if a=2 or a=3or a=5 then f:=true;

for i:=2 to trunc(sqrt(a))doif a mod i =0 then f:=false ;

writeln(f);

end.

7樓:逍遙神劍

樓上正解,很基礎的題目啊...這位仁兄還要多加努力啊...求素數最多瘋狂優化,沒有簡便方法的

c語言 判斷一個數是否為素數???

8樓:宰桂枝汗媚

不矛盾,首首先這個題目給的結果是相反的,但這不是重要的,反回來就行了。第一個i<=k是作為一個限定條件程式只要求到k就行了,減少計算量。如果這個數不是素數,它必然滿足整個for迴圈語句,如果不滿足的話i將等於k加1,讀者可自己證明,注意i++。

9樓:井鬆蘭益黛

f是一個標記,當他的值為1時,說明他能被某個不為1和它本身的數整除,也就是說你輸入的數不是素數,

至於那個i<=k和i>=k+1,如果你輸入的那個數m一直都不能被從2到sqrt(m)整除時,經過迴圈後i=k+1,就滿足i>=k+1,如果你輸入的數m能被從2到sqrt(m)的某個數整除時,i就不會》=k+1

10樓:公孫淑敏魯卿

其實,很簡單假如n

的算術平方根為

r,即n

=r*r如果n

不是素數,那麼就至少有一個因子

a,即n

=a*b

2

2到r直接的因子

11樓:富鵬同

你利用的是這個迴圈:讓一個待檢測的數依次除以2,3,4……一直到該數的平方根,如果能整除就說明該數不是素數。

依照你的迴圈for(i=2;i<=k;i++),注意,後面有個i++,所以如果該數是素數,那麼迴圈到i=sqrt(m)時,m仍不會被整除,因此i會自增1個單位,由此有i>k,此時就可以斷定m是素數了

o(∩_∩)o

12樓:

依照你的迴圈for(i=2;i<=k;i++),注意,後面有個i++,所以如果該數是素數,那麼迴圈到i=sqrt(m)時,m仍不會被整除,因此i會自增1個單位,由此有i>k,此時就可以斷定m是素數了

13樓:育知同創教育

#include"stdio.h"

#include"math.h"

main()

判斷是否為素數,只需要判斷它是否只能被1和它本身整除。

14樓:匿名使用者

#include

#include

void main()

c語言程式/*判斷一個整數是不是素數(素數就是隻能被本身和1整除的數)。*/

15樓:

#include

int main()

}printf("sushu");

return 0;}

16樓:匿名使用者

#include

main()

c 題目 輸入數判斷是否為素數

lude stdlib.h int fun int p void main 開始迴圈 while 1 else 詢問是否繼續 retry printf continue?y n 清空緩衝區,以防之前輸入整數時按的回車鍵被這裡誤接收了fflush stdin scanf c s 輸入y或者y則繼續 i...

下面的程式框圖能判斷任意輸入的數x的奇偶性其中判斷框內的條

由程式框圖所體現的演算法可知判斷一個數是奇數還是偶數,看這個數除以2的餘數是1還是0 由圖可知應該填m 1 故選b 如圖的程式框圖,能判斷任意輸入的整數x的奇偶性 其中判斷框內的條件是 a m 0 b x 0 a試題分析 由製程式框圖所體現的演算法可知判斷一個數是奇數還是偶數,看這個數除以2的餘數是...

c語言題編寫判斷數是否是素數的函式

include int prime int a void main void int inputnumber int returnnumber printf please input a number scanf d inputnumber returnnumber prime inputnumbe...