1、首先需要打開vs軟件工程,準(zhǔn)備好一個(gè)空白的C語言文件,引入頭文件,主函數(shù)中暫時(shí)沒有內(nèi)容:
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)邛崍,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
2、這里開始編寫代碼,這里判斷素?cái)?shù)需要用到平方根,所以要在頭文件中引入math庫,然后編寫判斷素?cái)?shù)的函數(shù),函數(shù)有唯一的參數(shù)n,代表素?cái)?shù)。判斷的依據(jù)是素?cái)?shù)n只要不能被 2 到根號(hào)下n之 間任一整數(shù)整除,則n必定是素?cái)?shù),最后在主函數(shù)中調(diào)用判斷素?cái)?shù)的函數(shù)即可:
3、最后,編譯運(yùn)行程序,在彈出的命令行中輸入17這個(gè)素?cái)?shù),程序的打印結(jié)果是17是素?cái)?shù),證明了程序的正確性。以上就是用C語言判斷素?cái)?shù)的流程:
#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;
}
工具/材料
ubuntu,vim,gcc
01
打開ubuntu并開啟一個(gè)終端,輸入命令vim is_prime.c,打開編輯頁面,輸入預(yù)處理指令#includestdio.h用于在主函數(shù)中調(diào)用判斷函數(shù)。然后定義一個(gè)函數(shù)int is_prime(int n),即判斷整數(shù)n是否為素?cái)?shù)。
02
首先,判斷這個(gè)數(shù)是否小于2.若是,則直接返回0,即表示它不是一個(gè)素?cái)?shù)。
03
然后定義中間的因數(shù)i,初始值為2。依次使n對(duì)i取余數(shù),看n能否整除i,然后令i自增直到i的平方大于n。在這過程中,如果遇到n能整除i,則說明n不是一個(gè)素?cái)?shù)。如果循環(huán)能夠直到i的平方大于n才結(jié)束,說明n是一個(gè)素?cái)?shù)。
04
接下來,我們使用主函數(shù)進(jìn)行測(cè)試,使用printf("%d : %d\n", n, is_prime(n))的格式進(jìn)行輸出。如果輸出結(jié)果為0,說明不為素?cái)?shù);結(jié)果為1,說明是一個(gè)素?cái)?shù)。
測(cè)試的數(shù)據(jù)依次是2,4,9,15, 17, 23, 25。
05
退出編輯器vim,然后使用gcc編譯并運(yùn)行它,得到結(jié)果。通過結(jié)果我們可以看出,預(yù)期的結(jié)果與我們對(duì)于素?cái)?shù)的認(rèn)知是相同的,說明我們的程序編寫沒有錯(cuò)誤。以下是所有的源代碼:
#include stdio.h
//判斷一個(gè)數(shù)是否為素?cái)?shù)的函數(shù)定義
int is_prime(int n)
{
//判斷n是否小于2.若小于則直接返回0
//表示n不是一個(gè)素?cái)?shù)
if(n 2)
return 0;
//定義一個(gè)中間變量i,初始化i=2
int i = 2;
//依次判斷每一個(gè)不大于根號(hào)n的i是否能被n整除
for(i = 2; i * i = n;i++)
{
//如果能夠整除
if(n % i == 0)
//直接返回0,表示n不是一個(gè)素?cái)?shù)
return 0;
}
//如果程序運(yùn)行到這里,說明i*i大于n
//說明n是一個(gè)素?cái)?shù)
return 1;
}
int main()
{
printf("%d : %d\n", 2, is_prime(2));
printf("%d : %d\n", 4, is_prime(4));
printf("%d : %d\n", 9, is_prime(9));
printf("%d : %d\n", 15, is_prime(15));
printf("%d : %d\n", 17, is_prime(17));
printf("%d : %d\n", 23, is_prime(23));
printf("%d : %d\n", 25, is_prime(25));
return 0;
}
目的:判斷一個(gè)數(shù)是否為素?cái)?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都不能整除,此時(shí)i再自增1到m,不滿足i? m跳出for循環(huán),這時(shí)i?= m。
擴(kuò)展資料:
素?cái)?shù)定理:
1、在一個(gè)大于1的數(shù)a和它的2倍之間(即區(qū)間(a,?2a]中)必存在至少一個(gè)素?cái)?shù)。
2、存在任意長(zhǎng)度的素?cái)?shù)等差數(shù)列。
3、一個(gè)偶數(shù)可以寫成兩個(gè)合數(shù)之和,其中每一個(gè)合數(shù)都最多只有9個(gè)質(zhì)因數(shù)。(挪威數(shù)學(xué)家布朗,1920年)。
4、一個(gè)偶數(shù)必定可以寫成一個(gè)質(zhì)數(shù)加上一個(gè)合成數(shù),其中合數(shù)的因子個(gè)數(shù)有上界。(瑞尼,1948年)。
5、一個(gè)偶數(shù)必定可以寫成一個(gè)質(zhì)數(shù)加上一個(gè)最多由5個(gè)因子所組成的合成數(shù)。后來,有人簡(jiǎn)稱這結(jié)果為?(1?+?5)(中國潘承洞,1968年)。
6、一個(gè)充分大偶數(shù)必定可以寫成一個(gè)素?cái)?shù)加上一個(gè)最多由2個(gè)質(zhì)因子所組成的合成數(shù)。簡(jiǎn)稱為?(1?+?2)。
參考資料來源:百度百科-質(zhì)數(shù)
當(dāng)前標(biāo)題:c語言一個(gè)判別素?cái)?shù)的函數(shù) c語言寫一個(gè)判別素?cái)?shù)的函數(shù)
文章網(wǎng)址:http://chinadenli.net/article44/dogcihe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、企業(yè)建站、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站制作、品牌網(wǎng)站建設(shè)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)