#3416: 求教,wa,line21


jacob (樓上你好猛)

學校 : 上海市金山中学
編號 : 10879
來源 : [116.236.137.59]
最後登入時間 :
2013-08-23 12:23:42
a007. 判斷質數 | From: [58.40.190.231] | 發表日期 : 2010-02-10 18:23

 #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 (樓上你好猛)

學校 : 上海市金山中学
編號 : 10879
來源 : [116.236.137.59]
最後登入時間 :
2013-08-23 12:23:42
a007. 判斷質數 | From: [58.40.190.231] | 發表日期 : 2010-02-10 18:26

應該是這個

 

#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 (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a007. 判斷質數 | From: [118.166.114.16] | 發表日期 : 2010-02-10 23:19

應該是這個

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 (樓上你好猛)

學校 : 上海市金山中学
編號 : 10879
來源 : [116.236.137.59]
最後登入時間 :
2013-08-23 12:23:42
a007. 判斷質數 | From: [58.40.190.231] | 發表日期 : 2010-02-11 01:12

應該是這個

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)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a007. 判斷質數 | From: [125.228.228.125] | 發表日期 : 2010-02-11 08:12

應該是這個

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 (樓上你好猛)

學校 : 上海市金山中学
編號 : 10879
來源 : [116.236.137.59]
最後登入時間 :
2013-08-23 12:23:42
a007. 判斷質數 | From: [58.40.189.60] | 發表日期 : 2010-02-11 10:50

想想看

如果我丟2進去 ?

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

應該懂了吧 = )

 

把那行挪到for迴圈下面

應該就可以了吧...

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