#3416: 求教,wa,line21


jacob (樓上你好猛)


 #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)
您的答案為: 非質數
正確答案為: 質數

#3417: Re:求教,wa,line21


jacob (樓上你好猛)


應該是這個

 

#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";
 }}

 

#3420: Re:求教,wa,line21


example (學姊)


應該是這個

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 ;   
}

 sqrt() 不用加 1
#3421: Re:求教,wa,line21


jacob (樓上你好猛)


應該是這個

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 ;   
}

 sqrt() 不用加 1


多謝回復,但似乎不是這裡欸,去掉了+1還是wa21......QQ

再說,+1多循環一次,最多沒有傚率一點,也不至于産生誤判的錯誤吧。 好想知道21是什么數值

#3422: Re:求教,wa,line21


linishan (L)


應該是這個

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 ;   
}

 sqrt() 不用加 1


多謝回復,但似乎不是這裡欸,去掉了+1還是wa21......QQ

再說,+1多循環一次,最多沒有傚率一點,也不至于産生誤判的錯誤吧。 好想知道21是什么數值

想想看

如果我丟2進去 ?

if(n%2==0) return 0;

應該懂了吧 = )

 

把那行挪到for迴圈下面

應該就可以了吧...

#3425: Re:求教,wa,line21


jacob (樓上你好猛)


想想看

如果我丟2進去 ?

if(n%2==0) return 0;

應該懂了吧 = )

 

把那行挪到for迴圈下面

應該就可以了吧...

對了,感覺應該就是2的問題好高興喔,多謝,^_^