c語言用函數(shù)來判斷質(zhì)數(shù) c語言用函數(shù)來判斷質(zhì)數(shù)嗎

c語言中如何判斷一個數(shù)是否是質(zhì)數(shù)?

判斷一個數(shù)是否是質(zhì)數(shù)在于看這個數(shù)字是否只能被1和它本身所整除的整數(shù)。但是有一個例外,1不屬于質(zhì)數(shù)。

為雞東等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及雞東網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、雞東網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

c語言中的質(zhì)數(shù):

數(shù)學(xué)的概念中,素數(shù)就是只能被1和它本身所整除的整數(shù)。但是有一個例外,就是1不屬于素數(shù)。所以你在輸入一個整數(shù)并加以判斷的時候就需要考慮這種情況了。如下即可:

while(scanf("%lu", num) == 1 num != 1)

1

這里用到了while循環(huán)來判斷輸入的數(shù)值并加以判斷,如果輸入格式正確的話會返回一個1并將輸入的數(shù)值存入num這個變量中,然后再判斷num的值是否為1。

在這里有一條很好用的規(guī)則用于素數(shù)的判斷:測試的數(shù)只需要界于2到num的平方根之間的所有數(shù),看它們是否可以整除num。如果可以整除,說明輸入的數(shù)不是素數(shù);反之,說明輸入的數(shù)是素數(shù)。

到這里,就會有人說平方根怎么求,其實(shí)這個很好解決。你完全可以像下面這樣描述判斷條件:

for(div = 2; (div * div) = num;div++){

if(num % div == 0){

if((div * div) != num){

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else {

printf("%lu is divisible by %lu.\n", num, div);

在這里,在if條件語句里面還嵌套了一個if條件語句,用來判斷兩個約數(shù)是否是一樣的,比如144,約數(shù)是12和12,這時候就只需要打印一個約數(shù)即可。

第二,我們怎樣知道一個數(shù)數(shù)素數(shù)呢?

如果num是素數(shù),程序流程永遠(yuǎn)也進(jìn)不了if語句中。為了解決這個問題,可以在循環(huán)外設(shè)置一個變量為某一值,比方說1,在if語句中將這個變量重設(shè)為0。那么,循環(huán)完成后,可以檢查該變量是否仍然是1。如果是,則從沒進(jìn)入過if語句,這個數(shù)是素數(shù)。我這里用int類型的變量isPrime來當(dāng)作一個標(biāo)志實(shí)現(xiàn)這個想法。

好了,結(jié)合上面的所有想法,我們開始寫代碼了:

#includestdio.h

int main(void)

unsigned long num;// 要檢查的數(shù)

unsigned long div;// 可能的約數(shù)

int isPrime;// 素數(shù)的標(biāo)志,1代表是素數(shù),0代表不是素數(shù)

printf("Please enter an integer for analysis. ");

printf("Enter q to quit.\n");

while(scanf("%lu", num) == 1 num != 1)

for(div = 2, isPrime = 1;(div * div) = num; div++){

if(num % div == 0){// 如果能被div整除

if((div * div) != num){// 約數(shù)不相等

printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);

}else{// 約數(shù)相同

printf("%lu is divisible by %lu.\n", num, div);

// 將isPrime設(shè)置為0,表示其不是一個素數(shù)

isPrime = 0;

if(isPrime == 1){

printf("%lu 是素數(shù).\n", num);

printf("Please enter another integer for analysis. ");

printf("Enter q to quit.\n");

printf("Bye.\n");

return 0;

這里有一個關(guān)鍵就是,在for循環(huán)控制表達(dá)式中使用了逗號運(yùn)算符,以針對每個新輸入的數(shù)將isPrime初始化為1。

C語言編程:判斷某數(shù)是否是質(zhì)數(shù)

#includestdio.h

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

int a,flag;

scanf("%d",a);/*輸入一個數(shù)進(jìn)行判斷是否是質(zhì)數(shù)*/

int isprime(int);/*這里是對將要調(diào)用的函數(shù)聲明一下*/

flag=isprime(int);

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

printf("%d is not isprime",a):

return 1;/*這里的語句代表調(diào)用函數(shù)成功*/

}

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

int i;

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

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

return 1;/*否則經(jīng)過循環(huán)之后,都沒有相除為0呢,就說明一定是素數(shù)了*/

}

看到這里是不是有點(diǎn)疑惑了呢?我到百度查了一下,質(zhì)數(shù)也稱素數(shù),你注意看就好。。不懂再追問。。

不過我想你看完之后你應(yīng)該能明的了,我已經(jīng)寫得好詳細(xì)了啦。。。。

C語言如何使用自定義函數(shù)判斷素數(shù)?

#include stdio.h

int fun(int x)//

{

if(x2)

return 0;//返回0,非素數(shù)

for(int i=2;i*i=x;i++)

if(x%i==0)

return 0;

return 1;//返回1,素數(shù)

}

int main()

{

int n;

scanf("%d",n);

if(fun(n)==1)

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

else

printf("%d不是素數(shù)\n",n);

return 0;

}

用C語言如何判斷素數(shù)?

素數(shù)又稱質(zhì)數(shù),所謂素數(shù)是指除了 1 和它本身以外,不能被任何整數(shù)整除的數(shù),例如17就是素數(shù),因?yàn)樗荒鼙?2~16 的任一整數(shù)整除。

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

思路2、判斷方法還可以簡化。

m 不必被2~m-1之間的每一個整數(shù)去除,只需被2~√m之間的每一個整數(shù)去除就可以了。如果 m 不能被2~√m?間任一整數(shù)整除,m必定是素數(shù)。例如判別17是是否為素數(shù),只需使17被2~4之間的每一個整數(shù)去除,由于都不能整除,可以判定17是素數(shù)。

原因:因?yàn)槿绻鹠能被2~m-1之間任一整數(shù)整除,其二個因子必定有一個小于或等于√m,另一個大于或等于√m。

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

兩種思路的代碼請看解析。

拓展資料:

素數(shù)(prime number)又稱質(zhì)數(shù),有無限個。素數(shù)定義為在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)。

C語言是一門面向過程、抽象化的通用程序設(shè)計語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計語言。

參考資料:

百度百科——素數(shù)

百度百科——C語言

文章名稱:c語言用函數(shù)來判斷質(zhì)數(shù) c語言用函數(shù)來判斷質(zhì)數(shù)嗎
轉(zhuǎn)載注明:http://muchs.cn/article18/hgehdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計虛擬主機(jī)、外貿(mào)建站、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司