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

創(chuàng)新互聯(lián)是專業(yè)的周口網(wǎng)站建設(shè)公司,周口接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行周口網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
c語(yǔ)言中的質(zhì)數(shù):
數(shù)學(xué)的概念中,素?cái)?shù)就是只能被1和它本身所整除的整數(shù)。但是有一個(gè)例外,就是1不屬于素?cái)?shù)。所以你在輸入一個(gè)整數(shù)并加以判斷的時(shí)候就需要考慮這種情況了。如下即可:
while(scanf("%lu", num) == 1 num != 1)
1
這里用到了while循環(huán)來(lái)判斷輸入的數(shù)值并加以判斷,如果輸入格式正確的話會(huì)返回一個(gè)1并將輸入的數(shù)值存入num這個(gè)變量中,然后再判斷num的值是否為1。
在這里有一條很好用的規(guī)則用于素?cái)?shù)的判斷:測(cè)試的數(shù)只需要界于2到num的平方根之間的所有數(shù),看它們是否可以整除num。如果可以整除,說(shuō)明輸入的數(shù)不是素?cái)?shù);反之,說(shuō)明輸入的數(shù)是素?cái)?shù)。
到這里,就會(huì)有人說(shuō)平方根怎么求,其實(shí)這個(gè)很好解決。你完全可以像下面這樣描述判斷條件:
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條件語(yǔ)句里面還嵌套了一個(gè)if條件語(yǔ)句,用來(lái)判斷兩個(gè)約數(shù)是否是一樣的,比如144,約數(shù)是12和12,這時(shí)候就只需要打印一個(gè)約數(shù)即可。
第二,我們?cè)鯓又酪粋€(gè)數(shù)數(shù)素?cái)?shù)呢?
如果num是素?cái)?shù),程序流程永遠(yuǎn)也進(jìn)不了if語(yǔ)句中。為了解決這個(gè)問(wèn)題,可以在循環(huán)外設(shè)置一個(gè)變量為某一值,比方說(shuō)1,在if語(yǔ)句中將這個(gè)變量重設(shè)為0。那么,循環(huán)完成后,可以檢查該變量是否仍然是1。如果是,則從沒(méi)進(jìn)入過(guò)if語(yǔ)句,這個(gè)數(shù)是素?cái)?shù)。我這里用int類型的變量isPrime來(lái)當(dāng)作一個(gè)標(biāo)志實(shí)現(xiàn)這個(gè)想法。
好了,結(jié)合上面的所有想法,我們開(kāi)始寫代碼了:
#includestdio.h
int main(void)
unsigned long num;// 要檢查的數(shù)
unsigned long div;// 可能的約數(shù)
int isPrime;// 素?cái)?shù)的標(biāo)志,1代表是素?cái)?shù),0代表不是素?cái)?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,表示其不是一個(gè)素?cái)?shù)
isPrime = 0;
if(isPrime == 1){
printf("%lu 是素?cái)?shù).\n", num);
printf("Please enter another integer for analysis. ");
printf("Enter q to quit.\n");
printf("Bye.\n");
return 0;
這里有一個(gè)關(guān)鍵就是,在for循環(huán)控制表達(dá)式中使用了逗號(hào)運(yùn)算符,以針對(duì)每個(gè)新輸入的數(shù)將isPrime初始化為1。
這是我以前寫過(guò)的判斷質(zhì)數(shù)的程序,希望對(duì)你有幫助。
#includestdio.h
int
prime(int
a)
{
int
i;
for(i=2;i=a/2;i++)
{
if(a%i==0)
break;
}
if(ia/2)
return
1;
else
return
0;
}
int
main(void)
{
int
x;
printf("請(qǐng)輸入一個(gè)整數(shù):");
scanf("%d",x);
if(prime(x))
printf("%d為素?cái)?shù)\n",x);
else
printf("%d不是素?cái)?shù)\n",x);
}
主要是加了break
#includestdio.h
int main(int argc,int argv[]){
int a,flag;
scanf("%d",a);/*輸入一個(gè)數(shù)進(jìn)行判斷是否是質(zhì)數(shù)*/
int isprime(int);/*這里是對(duì)將要調(diào)用的函數(shù)聲明一下*/
flag=isprime(int);
if(flag==1) printf("%d is isprime",a);
printf("%d is not isprime",a):
return 1;/*這里的語(yǔ)句代表調(diào)用函數(shù)成功*/
}
int isprime(int a){ /*功能函數(shù),判斷是否是素?cái)?shù)*/
int i;
for(i=2;i=a/2;i++)
if(a%i==0) return 0;/*只要有一次相除為0,馬上就能判斷不是素?cái)?shù)*/
return 1;/*否則經(jīng)過(guò)循環(huán)之后,都沒(méi)有相除為0呢,就說(shuō)明一定是素?cái)?shù)了*/
}
看到這里是不是有點(diǎn)疑惑了呢?我到百度查了一下,質(zhì)數(shù)也稱素?cái)?shù),你注意看就好。。不懂再追問(wèn)。。
不過(guò)我想你看完之后你應(yīng)該能明的了,我已經(jīng)寫得好詳細(xì)了啦。。。。
#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是質(zhì)數(shù)\n", n);
else
printf("%d不是質(zhì)數(shù)\n", n);
}
return 0;
}
本文名稱:C語(yǔ)言判斷質(zhì)數(shù)函數(shù),判斷質(zhì)數(shù) c語(yǔ)言
本文URL:http://chinadenli.net/article48/dsgdhhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站策劃、小程序開(kāi)發(fā)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)