#include<stdio.h>
#include<math.h>
int sushu(int b);
int huiwen(int c);
int main()
{int a;
for(a=100;a<1000;a++)
{if(sushu(a) && huiwen(a))
printf("%d\n",a);
}
return 0;
}
int sushu(int b)
{int e,f;
e=sqrt(b);
for(f=2;f<=e;f++)
if(b%f==0)
return 0;
}
int huiwen(int c)
{int g,h;
g=c/100;
h=c%10;
if(g==h)
return 1;
return 0;
}
#include<stdio.h>
#include<math.h>
int sushu(int b);
int huiwen(int c);
int main()
{int a;
for(a=100;a<1000;a++)
{if(sushu(a) && huiwen(a))
printf("%d\n",a);
}
return 0;
}
int sushu(int b)
{int e,f;
e=sqrt(b);
for(f=2;f<=e;f++)
if(b%f!=0)
return 1;
}
int huiwen(int c)
{int g,h;
g=c/100;
h=c%10;
if(g==h)
return 1;
return 0;
}
uj5u.com熱心網友回復:
兩個都不對啊,驗證素數的函式總得既能回傳0又能回傳1吧?這樣才符合邏輯啊。uj5u.com熱心網友回復:
修改第一個,供參考:#include<stdio.h>
#include<math.h>
int sushu(int b);
int huiwen(int c);
int main()
{
int a;
for(a=100;a<1000;a++)
{
if(sushu(a) && huiwen(a))
printf("%d\n",a);
}
return 0;
}
int sushu(int b)
{
int e,f;
e=sqrt(b);
for(f=2;f<=e;f++)
if(b%f==0)return 0;
return 1;
}
int huiwen(int c)
{
int g,h;
g=c/100;
h=c%10;
if(g==h)
return 1;
return 0;
}
uj5u.com熱心網友回復:
第一個對的,第二個不對
uj5u.com熱心網友回復:
錯在第二個自定義函式if的判斷
uj5u.com熱心網友回復:
第二種方法的,第二個自定義函式為啥不對。
uj5u.com熱心網友回復:
兩個方法都存在漏洞和錯誤,第一種里,for(f=2;f<=e;f++)if(b%f==0)return 0; ,如果b素數時,if(b%f==0)return 0;這條陳述句不會被執行到,也就意味著到函式運行結束,也沒有一個明確的回傳值,主函式里的if()判斷靠什么去判斷呢,
這是潛在的隱患。第二種是錯上加錯,不但第一種的隱患沒排除,還把判斷if(b%f!=0) return 1; 條件搞反了,把不是
素數的也歸到素數里去了,假如b=9時,9%2!=0成立,馬上return 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/282432.html
標籤:C語言
上一篇:用C語言實作排名
