1、首先需要打開vs軟件工程,準(zhǔn)備好一個空白的C語言文件,引入頭文件,主函數(shù)中暫時沒有內(nèi)容:
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)邛崍,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
2、這里開始編寫代碼,這里判斷素數(shù)需要用到平方根,所以要在頭文件中引入math庫,然后編寫判斷素數(shù)的函數(shù),函數(shù)有唯一的參數(shù)n,代表素數(shù)。判斷的依據(jù)是素數(shù)n只要不能被 2 到根號下n之 間任一整數(shù)整除,則n必定是素數(shù),最后在主函數(shù)中調(diào)用判斷素數(shù)的函數(shù)即可:
3、最后,編譯運行程序,在彈出的命令行中輸入17這個素數(shù),程序的打印結(jié)果是17是素數(shù),證明了程序的正確性。以上就是用C語言判斷素數(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并開啟一個終端,輸入命令vim is_prime.c,打開編輯頁面,輸入預(yù)處理指令#includestdio.h用于在主函數(shù)中調(diào)用判斷函數(shù)。然后定義一個函數(shù)int is_prime(int n),即判斷整數(shù)n是否為素數(shù)。
02
首先,判斷這個數(shù)是否小于2.若是,則直接返回0,即表示它不是一個素數(shù)。
03
然后定義中間的因數(shù)i,初始值為2。依次使n對i取余數(shù),看n能否整除i,然后令i自增直到i的平方大于n。在這過程中,如果遇到n能整除i,則說明n不是一個素數(shù)。如果循環(huán)能夠直到i的平方大于n才結(jié)束,說明n是一個素數(shù)。
04
接下來,我們使用主函數(shù)進行測試,使用printf("%d : %d\n", n, is_prime(n))的格式進行輸出。如果輸出結(jié)果為0,說明不為素數(shù);結(jié)果為1,說明是一個素數(shù)。
測試的數(shù)據(jù)依次是2,4,9,15, 17, 23, 25。
05
退出編輯器vim,然后使用gcc編譯并運行它,得到結(jié)果。通過結(jié)果我們可以看出,預(yù)期的結(jié)果與我們對于素數(shù)的認知是相同的,說明我們的程序編寫沒有錯誤。以下是所有的源代碼:
#include stdio.h
//判斷一個數(shù)是否為素數(shù)的函數(shù)定義
int is_prime(int n)
{
//判斷n是否小于2.若小于則直接返回0
//表示n不是一個素數(shù)
if(n 2)
return 0;
//定義一個中間變量i,初始化i=2
int i = 2;
//依次判斷每一個不大于根號n的i是否能被n整除
for(i = 2; i * i = n;i++)
{
//如果能夠整除
if(n % i == 0)
//直接返回0,表示n不是一個素數(shù)
return 0;
}
//如果程序運行到這里,說明i*i大于n
//說明n是一個素數(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;
}
目的:判斷一個數(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。
擴展資料:
素數(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ù)