#include stdio.h
創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、巴彥淖爾網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為巴彥淖爾等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
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;
}
素數(shù)又稱質(zhì)數(shù),所謂素數(shù)是指除了 1 和它本身以外,不能被任何整數(shù)整除的數(shù),例如17就是素數(shù),因為它不能被 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ù)。
原因:因為如果m能被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)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設(shè)計語言。
參考資料:
百度百科——素數(shù)
百度百科——C語言
c語言判斷素數(shù)的函數(shù)程序:
經(jīng)分析,以上代碼使用flag的值來判斷輸入的n是否為素數(shù),flag=1,n為素數(shù);flag=0,n不是素數(shù)。完善if條件語句,第一個if,主函數(shù)中的if調(diào)用函數(shù),需要填入一個參數(shù),即prime(n);第二個if,是判斷什么情況下flag=0,即輸入的整數(shù)不為素數(shù),即(n/i==0),余數(shù)為0,可以整除;最后返回flag的值,returnflag
但是經(jīng)過運行可以知道,n=4的時候,程序判斷4是素數(shù),明顯是錯誤的,n取0和1的時候同理,程序存在漏洞。分析得知,在定義函數(shù)的過程中,for循環(huán)條件語句,i=0,如果為負(fù)整數(shù),另加判斷條件,略)
1、首先需要打開vs軟件工程,準(zhǔn)備好一個空白的C語言文件,引入頭文件,主函數(shù)中暫時沒有內(nèi)容:
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ù)的流程: