這是我以前寫過的判斷質(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)!
#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("請輸入一個整數(shù):");
scanf("%d",x);
if(prime(x))
printf("%d為素數(shù)\n",x);
else
printf("%d不是素數(shù)\n",x);
}
主要是加了break
判斷一個數(shù)是否是質(zhì)數(shù)在于看這個數(shù)字是否只能被1和它本身所整除的整數(shù)。但是有一個例外,1不屬于質(zhì)數(shù)。
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。
#include?stdio.h
#include?math.h
int?jugde(int?x)
{
int?i;
if(x??2)
return?0;
for(i?=?2;?i?=?sqrt(x);?++i)
if(x%i?==?0)
return?0;
return?1;
}
int?main()
{
int?i;
for(i?=?101;?i??1000;?i+=2)
if(jugde(i)?==?1)
printf("%d?",?i);
return?0;
}
#includestdio.h//頭文件
int main()//主函數(shù)
{
int number,i;//定義變量
printf("請隨機(jī)輸入一個數(shù):");//提示語句
scanf("%d",number);//鍵盤輸入需要判斷的數(shù)
for(i=2;i=number-1;i++)//循環(huán)從2開始,到這個數(shù)的掐前一個數(shù)為止
{
if(number%i==0)//如果取余結(jié)果為0
break;
}
if(inumber)
{
printf("%d不是素數(shù)",number);
}
else
{
printf("%d是素數(shù)",number);
}
return 0; //函數(shù)返回值為0
}
目的:判斷一個數(shù)是否為素數(shù)
#?include?stdio.h
int?main(void)
{
int m;
int?i;
scanf("%d",m);
for(i?=?2;?i? m;?i++) ? ? //2到(m-1)的數(shù)去除m
{
if(m%?i?==?0)???????//?判斷能否整除
break;
}
if?(i?== m)
printf("YES!\n");
else
printf("No!\n");
}
for循環(huán)的功能:
①若能整除,通過break跳出函數(shù);
②若一直到m-1都不能整除,此時i再自增1到m,不滿足i? m跳出for循環(huán),這時i?= m。
擴(kuò)展資料:
素數(shù)定理:
1、在一個大于1的數(shù)a和它的2倍之間(即區(qū)間(a,?2a]中)必存在至少一個素數(shù)。
2、存在任意長度的素數(shù)等差數(shù)列。
3、一個偶數(shù)可以寫成兩個合數(shù)之和,其中每一個合數(shù)都最多只有9個質(zhì)因數(shù)。(挪威數(shù)學(xué)家布朗,1920年)。
4、一個偶數(shù)必定可以寫成一個質(zhì)數(shù)加上一個合成數(shù),其中合數(shù)的因子個數(shù)有上界。(瑞尼,1948年)。
5、一個偶數(shù)必定可以寫成一個質(zhì)數(shù)加上一個最多由5個因子所組成的合成數(shù)。后來,有人簡稱這結(jié)果為?(1?+?5)(中國潘承洞,1968年)。
6、一個充分大偶數(shù)必定可以寫成一個素數(shù)加上一個最多由2個質(zhì)因子所組成的合成數(shù)。簡稱為?(1?+?2)。
參考資料來源:百度百科-質(zhì)數(shù)
#includestdio.h
#include
math.h//包含sqrt函數(shù)
int
prime(int
m);
main(){
int
m;
scanf("%d",m);
if(prime(m))
printf("%d是質(zhì)數(shù)",m);
else
printf("%d不是質(zhì)數(shù)",m);
}
int
prime(int
m){
int
i,n=sqrt(m);
for(i=2;i=n;i++)
{
if(m%i==0)return
0;//如果整除,終止循環(huán),返回0
}
return
1;
}
本文題目:c語言質(zhì)數(shù)判斷函數(shù) c語言中如何判斷質(zhì)數(shù)
當(dāng)前鏈接:http://jinyejixie.com/article0/dododoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站收錄、ChatGPT、外貿(mào)建站、搜索引擎優(yōu)化、網(wǎng)站維護(hù)
聲明:本網(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)