c語言判斷素數的函數程序:
樂平ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
經分析,以上代碼使用flag的值來判斷輸入的n是否為素數,flag=1,n為素數;flag=0,n不是素數。完善if條件語句,第一個if,主函數中的if調用函數,需要填入一個參數,即prime(n);第二個if,是判斷什么情況下flag=0,即輸入的整數不為素數,即(n/i==0),余數為0,可以整除;最后返回flag的值,returnflag
但是經過運行可以知道,n=4的時候,程序判斷4是素數,明顯是錯誤的,n取0和1的時候同理,程序存在漏洞。分析得知,在定義函數的過程中,for循環條件語句,i=0,如果為負整數,另加判斷條件,略)
我以前寫的程序,絕對正確
#include stdio.h
#include stdlib.h
#include math.h
void main()
{
long num,nu;
long number();
int a=0;
while(1)
{
printf(\"1.判斷是否是素數\\n2。退出\\n請選擇:\");
scanf(\"%d\",a);
switch(a)
{
case 1:
printf(\"\\n請輸入判斷數字\");
scanf(\"%ld\",num);
nu=num;
num=number(num);
if(num!=0)
printf(\"%ld是素數\\n\",num);
else
printf(\"%ld不是素數\\n\",nu);
printf(\"\\n\\n\");
break;
case 2:
exit(0);
default:
printf(\"\\n您輸入的有錯誤,請重新輸入!\\n\\n\");
break;
}
}
}
long number(n)
long n;
{
static long k,i;
static long m;
k=(long)sqrt(n);
for(i=2;i=k;i++)
if(n%i==0)
break;
if(i=k+1)
m=n;
else
m=0;
return(m);
}
還有一個錯誤,C語言中沒有bool類型,默認返回值是0,你可以一個一個類型的函數檢測、float,沒有返回值時、double類型的函數,你這個程序不只是邏輯不能那樣說,但是如果是long或者char型時,返回值就不是0了,如果是返回值int。
另外多說一句、算法錯了
文章題目:c語言素數判斷子函數 c語言判斷素數的函數
當前鏈接:http://vcdvsql.cn/article42/dopgiec.html
成都網站建設公司_創新互聯,為您提供服務器托管、ChatGPT、電子商務、、網站建設、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯