c語言中質數的判斷,質數判斷C語言

本文目錄一覽:

C語言判斷一個數是否是質數

根據質數的定義,在判斷一個數n是否是質數時,只要用1至n-1去除n,看看能否整除即可。

還有更好的辦法:先找一個數m,使m的平方大於n,再用小於等於m的質數去除n(n為被除數),如果都不能整除,則n必然是質數。如我們要判斷1993是不是質數,50*501993,那麼只要用1993除以50的質數看是否能整除,若不能即為質數。100以內的質數有25個,還是比較好記的,只要記熟100以內質數,就可以快速判斷10000以內的數是不是質數。

100以內的質數有2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97,在100內共有25個質數。

只有1和它本身兩個因數的自然數,叫質數(或稱素數)。(如:由2÷1=2,2÷2=1,可知2的因數只有1和它本身2這兩個約數,所以2就是質數。與之相對立的是合數:「除了1和它本身兩個因數外,還有其它因數的數,叫合數。」如:4÷1=4,4÷2=2,4÷4=1,很顯然,4的因數除了1和它本身4這兩個因數以外,還有因數2,所以4是合數。)

c語言怎麼判斷一個數是素數

判斷是否是質數最直觀和簡單的方法就是從2開始直接除,能除盡(餘數為0)就不是質數。則C語言實現為:

int isprime(int m)

{

int i;

for(i=2;im;i++)

if(m%i==0)

return 0;

else

return 1;

}

該演算法的時間複雜度O(n)。

可以改進一下,根據如果一個數是合數,那麼它的最小質因數肯定小於等於它的平方根。用反證法可以證明一下。假設x是n的最小質因數,則存在n/x=p。px,x*p=n。如果x不小於等於它的平方根,則x*xn,而px,故x*pn,假設不成立。合數是與質數相對應的自然數。一個大於1的自然數如果它不是合數,則它是質數。也就是說如果一個數能被它的最小質因數整除的話,那它肯定是合數,即不是質數。所以判斷一個數是否是質數,只需判斷它是否能被小於它開跟號後的所有數整除,因此,這樣做的運算少了很多,降低了時間複雜度。

c語言判斷質數

#includestdio.h

#include math.h

void main()

{ int zhi(int);

int j=0,b[20]={1,3,7,9},a[20]={2,3,5,7},c,l=4,d[20],n,g=0,h=0,i,N,s=10,z,f;

scanf(“%d”,N);

for(i=1;i=N-1;i++)

{

for(j=0;jl;j++)

{

n=a[j]*s;

f=n;

for(h=0;h4;h++)

{ n=n+b[h];

c=zhi(n);

if(c==1)

d[++g]=n;

n=f;

}

}

for(j=0;jg;j++)

a[j]=d[j+1];

l=g,z=g,g=0;

}

if(N==1)

printf(“2\n3\n5\n7\n”);

else

for(j=1;j=z;j++)

printf(“%d\n”,d[j]);

}

int zhi(int m)

{ int k,i,c=0;

k=(int)sqrt(m);

for(i=2;i=k;i++)

if(m%i==0)break;

if(ik) c=1;

return c;

}

C語言編程:判斷某數是否是質數

#includestdio.h

int main(int argc,int argv[]){

int a,flag;

scanf(“%d”,a);/*輸入一個數進行判斷是否是質數*/

int isprime(int);/*這裡是對將要調用的函數聲明一下*/

flag=isprime(int);

if(flag==1) printf(“%d is isprime”,a);

printf(“%d is not isprime”,a):

return 1;/*這裡的語句代表調用函數成功*/

}

int isprime(int a){ /*功能函數,判斷是否是素數*/

int i;

for(i=2;i=a/2;i++)

if(a%i==0) return 0;/*只要有一次相除為0,馬上就能判斷不是素數*/

return 1;/*否則經過循環之後,都沒有相除為0呢,就說明一定是素數了*/

}

看到這裡是不是有點疑惑了呢?我到百度查了一下,質數也稱素數,你注意看就好。。不懂再追問。。

不過我想你看完之後你應該能明的了,我已經寫得好詳細了啦。。。。

c語言判斷一個數是否為質數

#includestdio.h

int main()

{

int i, n;

while (scanf(“%d”, n) != EOF)

{

for (i = 2; i n; i++)

if (n % i == 0)

break;

if (i = nn1)

printf(“%d是質數\n”, n);

else

printf(“%d不是質數\n”, n);

}

return 0;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/302987.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python如何判斷質數和異常處理

    本文主要介紹Python如何判斷質數和異常處理,其中包括多個方面的內容。 一、判斷質數 1、定義:質數是指除了1和它本身兩個因數外,沒有其他的因數。 2、判斷方法: (1)從2到n…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 編程找出100以內的質數並求和

    本文將會介紹如何使用編程語言找出100以內的所有質數並求和。而質數,指的是只能被1和它本身整除的數字。 一、判斷質數的演算法 要找出100以內的質數,首先要搞清楚什麼是質數,以及如何…

    編程 2025-04-28
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論