#include <iostream.h>
# include <math.h>
int issushu(long n)
{
long i;
if (n%2==0) return 0;
for(i=3;i<=sqrt(n)+1;i+=2)
{
if(n%i==0)return 0;
}
return 1 ;
}
main()
{
long n;
while(cin>>n)
{
a=issushu(n);
if(a==1)
cout<<"質數\n";
else
cout<<"非質數\n";
}}
與正確輸出不相符(line:21)
您的答案為: 非質數
正確答案為: 質數
應該是這個
#include <iostream.h>
# include <math.h>
int issushu(long n)
{
long i;
if (n%2==0) return 0;
for(i=3;i<=sqrt(n)+1;i+=2)
{
if(n%i==0)return 0;
}
return 1 ;
}
main()
{
long n;
while(cin>>n)
{
if(issushu(n))
cout<<"質數\n";
else
cout<<"非質數\n";
}}
應該是這個
int issushu(long n)
{
long i;
if (n%2==0) return 0;
for(i=3;i<=sqrt(n)+1;i+=2)
{
if(n%i==0)return 0;
}
return 1 ;
}
多謝回復,但似乎不是這裡欸,去掉了+1還是wa21......QQ
再說,+1多循環一次,最多沒有傚率一點,也不至于産生誤判的錯誤吧。 好想知道21是什么數值
應該是這個
int issushu(long n)
{
long i;
if (n%2==0) return 0;
for(i=3;i<=sqrt(n)+1;i+=2)
{
if(n%i==0)return 0;
}
return 1 ;
}
多謝回復,但似乎不是這裡欸,去掉了+1還是wa21......QQ
再說,+1多循環一次,最多沒有傚率一點,也不至于産生誤判的錯誤吧。 好想知道21是什么數值
想想看
如果我丟2進去 ?
if(n%2==0) return 0;
應該懂了吧 = )
把那行挪到for迴圈下面
應該就可以了吧...