c語言中判斷自然數是不是素數的條件是什麼

2023-02-13 23:35:15 字數 4518 閱讀 5293

1樓:匿名使用者

1,首先了解素數的定義,一個大於1的自然數,除了1和它本身外,不能被其他自然數整除。2,以下是c語言程式。

#include ""

int main()

}if(flag==0)//根據flag的值判斷n是否是素數printf("%d不是素數",n);

elseprintf("%d是素數",n);

return 0;}

c語言程式設計判斷輸入的正整數是否為素數。

2樓:風翼殘念

將:for(k=2;k<=x[i]-1;k++)改成:for(g=0,k=2;k<=x[i]-1;k++)主要是在這個for迴圈前令g=0。

因為輸入的不止一個數,開頭的初始化g=0,在第一個數的時候就可能已經被改了。後面的數不重新初始化g=0,就不能保證對了。

判斷一個正整數n是不是素數的思路:

思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。

思路2):另外判斷方法還可以簡化。m 不必被 2 ~ m-1 之間的每一個整數去除,只需被 2 ~ m 之間的每一個整數去除就可以了。

如果 m 不能被 2 ~ m 間任一整數整除,m 必定是素數。例如判別 17 是是否為素數,只需使 17 被 2~4 之間的每一個整數去除,由於都不能整除,可以判定 17 是素數。

原因:因為如果 m 能被 2 ~ m-1 之間任一整數整除,其二個因子必定有一個小於或等於 √m,另一個大於或等於 √m。

例如 16 能被 2、4、8 整除,16=2*8,2 小於 4,8 大於 4,16=4*4,4=√16,因此只需判定在 2~4 之間有無因子即可。

正確**如下:

#include/*sqrt*/

#include/*scanf,printf,system*/

int isprime(int n)//判斷n是否為素數,如果是則返回1,否則返回0。

main ()

3樓:匿名使用者

素數:有無限個,除了1和它本身以外不再有其他的因數。所以可以通過for迴圈從2到n-1依次整除n如果能整除則不是素數,否則就是素數。

int fun(int n){/判斷n是否是素數int i;

for(i=2;i

4樓:永星天恆

#include

int main()

if(g==0)

printf("yes ")

elseprintf("no ")

return 0;

}修改後測試結果正確。

5樓:斯嘉麗_熹微

// 輸入一個數,判斷其是否為素數。

#include ""

#include

#include

int main()

else if(i==n-1)

printf("%d是素數", n);

}system("pause");

return 0;

}希望對你能有幫助。

6樓:匿名使用者

輸入:共兩行,第一行一個整數,為輸入正整數的個數n(1<=n<=1000);第二行n個空格隔開的正整數ai(1 <=ai <=1000)

輸出:一行,對於每個正整數,如果是素數則輸出yes,否則輸出no,中間用空格隔開。

以下是我編寫的程式。

#include

int main()

if(g==0)

7樓:定定定定定軍

你的**沒錯,不過有點瑕疵。你試試這個**,執行時是不是資訊更清晰了。還有,定義陣列的時候不要定義的太大,那樣浪費記憶體,我該改成100了,呵呵。

c語言中判斷一個正整數是否為素數,若是素數則輸出該素數,若不是則輸出該數所有的因子

8樓:匿名使用者

普通判斷素來數,只要找到因。

自數時就會用break結束判斷,這裡就用個標誌來表明找到了因數而繼續找下一個因素即可,最後根據標誌來判斷是否素數。另外,由於m/2一般會稍大於根號m所以用這個取代呼叫sqrt函式,如果要呼叫要寫:k=sqrt((double)m);。

#include

void main()

if ( a ) printf("%d是一個素數",m); else pritf(""

在c語言中,如何判斷一個數是不是素數?

c語言程式設計:輸入一個正整數n,判斷它是否為素數

9樓:魏子棟

#include/*sqrt*/

#include/*scanf,printf,system*/int isprime(int n)//判斷n是否為素數,如果是則返回1,否則返回0.

main ()

10樓:匿名使用者

這個程式是求100以內的素數。希望你在這個基礎上根據你的需要進修修改。這樣你既能參考也能學習哈~~~

#include ""

void main()

if(y==2)

printf("%5d",x);

11樓:匿名使用者

#include

using namespace std;

int main()

if(s==0)

cout<<"yes!前方發現一隻野生的素數!";

elsecout<<"no!你竟然發現了一隻可怕的合數!";

return 0;

}//這是c++,不過思路可以借鑑(〜^

12樓:匿名使用者

#include

#include

int main(void)

}printf("這個數(%d)是素數!")

return 0;

}//不懂請追問。

c語言程式設計判斷輸入的正整數是否為素數。

13樓:焦義尹子

你將:for(k=2;k<=x[i]-1;k++)改成:for(g=0,k=2;k<=x[i]-1;k++)主要是在這個for迴圈前令g=0,大概就行了吧?

因為您輸入的不止一個數,開頭的初始化g=0,在第一個數的時候就可能已經被改了。後面的數不重新初始化g=0,當然就不能保證對了。

14樓:富微蘭始橋

#include

intmain()

if(g==0)

printf("yes

");else

printf("no

}return0;}

修改後測試結果正確。

15樓:牛印枝薩書

最簡單的思路,就是從2開始逐個判斷能否整除,如果存在本身以外因子,就不是質數,否則是質數。

**:int is_prime(int n)

int main()

如何用c語言寫出判斷一個數是不是素數

16樓:生活

判斷一個整數m是否是素數,只需把m被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1)的**:

#include

int main()elsereturn 0;}判斷方法還可以簡化。m不必被 2 ~ m-1 之間的每一個整數去除,只需被 2 ~ 之間的每一個整數去除就可以了。如果m不能被 2 ~ 間任一整數整除,m必定是素數。

例如判別17是是否為素數,只需使17被2~4之間的每一個整數去除,由於都不能整除,可以判定17是素數。思路2)的**:

#include

#include

void main()

17樓:諤諤

這個**應該很好理解吧。

#include

void main()

}if(m==i)}

c語言判斷一個數是否是素數的函式

18樓:匿名使用者

你的想法是沒錯,但是程式寫錯了。

正確的 for(i=2;i<=sqrt(n);i++)if(n%i==0)return 0;

return 1;

代表for(i=2;i<=sqrt(n);i++)return 1; /是在for結束後進行的而你的。你應該明白了吧,第一次就會return 1跳出。每有全算一遍。

19樓:匿名使用者

素數要所有<=sqrt(n)的數都不能整除才行。

只有n%i==0成立的時候,才執行return 0。否則繼續for迴圈。

20樓:匿名使用者

是不會繼續執行for迴圈 因為只要滿足了這條件就可以判斷不是素數 而只有迴圈一遍以後都不能滿足條件才能判斷是素數 所以return 1 應在for迴圈之外。

編一程式,判斷自然數n是否為素數 素數是隻能被1和它本身整除

用vb的 du dim i n pd as booleanpd true for i 2 to n 1 if n mod i o then pd falsenext if abc then print n 是素數 zhi else print n 不是素數 end if c語言的 dao void ...

負數是不是自然數,負數是自然數嗎?

定義為 用以計量事物的件數或表示事物次序的數 即用數碼0,1,2,3,4,所表示的數 表示物體個數的數叫自然數,自然數由0開始 包括0 一個接一個,組成一個無窮的集體。自然數就是我們常說的正整數和0,整數包括自然數。所以負數不是自然數 我小學課本上有一句話 0,1,2,3,4,5 都是自然數 負數是...

如何判斷數是不是素數,如何判斷一個數是不是素數????

方法一 用試除法判斷一個自然數a是不是質數時,用各個質數從小到大依次去除a,如果到某一個質數正好整除,這個a就可以斷定不是質數 如果不能整除,當不完全商又小於這個質數時,就不必再繼續試除,可以斷定a必然是質數 方法二 只要找出x為一個奇數和一個偶數平方差的形式 這是一定的 便可以a2 b2 a b ...