#7481:


kevin1997324 (kevin)

學校 : 臺北市立建國高級中學
編號 : 30872
來源 : [111.185.77.58]
最後登入時間 :
2016-03-03 04:10:01
a007. 判斷質數 | From: [219.68.239.150] | 發表日期 : 2013-02-09 12:51

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int a,b;
    while(cin>>a)
    {
        if(a==2)
        {
           cout<<"質數"<<endl;
           continue;
        }
        else if(a==1)
        {
           cout<<"非質數"<<endl;
           continue;
        }
        else
        {
           for(int i=2;i<=sqrt(a);i++)
           {
              b=0;
              if(a%i==0)
              {
                 cout<<"非質數"<<endl;
                 b=3;
                 break;
              }                  
           }          
        }
        if(b!=3)     
           { 
              cout<<"質數"<<endl;
           } 
    }      
    return 0;
}

可以請問這樣寫哪裡錯了嗎?

測試過很多都沒出錯

不知道哪裡出了問題?

 
#7483: Re:wa?


passerr (20130326 0340 48)

學校 : 不指定學校
編號 : 8516
來源 : [125.224.93.117]
最後登入時間 :
2024-09-05 12:09:52
a007. 判斷質數 | From: [36.235.208.126] | 發表日期 : 2013-02-10 07:55


這讓我想到遊戲的密技^^

要連續輸入特定的數值,才能重現bug

說出來不怕你笑,我很不擅長一堆東西

這bug是其中之一

--------------------------

輸入

非質數(例如:4)

3

非質數

就這樣

 int main()
{
    int a,b;
    while(cin>>a)
    {
        if(a==2)
        {
           cout<<"質數"<<endl;
           continue;
        }
        else if(a==1)
        {
           cout<<"非質數"<<endl;
           continue;
        }
        else
        {

            b=0;
           for(int i=2;i<=sqrt(a);i++)
           {
             
              if(a%i==0)
              {
                 cout<<"非質數"<<endl;
                 b=3;
                 break;
              }                  
           }      

           if(b!=3)     
           { 
              cout<<"質數"<<endl;
           }       
        }
     
    }      
    return 0;
}

以上空白

 
#7505: Re:wa?


akira0331 (小迷糊)

學校 : 不指定學校
編號 : 26613
來源 : [203.70.194.240]
最後登入時間 :
2013-07-29 09:30:29
a007. 判斷質數 | From: [203.70.194.240] | 發表日期 : 2013-02-22 10:30

#include
#include
using namespace std;
int main()
{
    int a,b;
    while(cin>>a)
    {
        if(a==2)
        {
           cout<<"質數"<           continue;
        }
        else if(a==1)
        {
           cout<<"非質數"<           continue;
        }
        else
        {
           for(int i=2;i<=sqrt(a);i++)
           {
              b=0;
              if(a%i==0)
              {
                 cout<<"非質數"<                 b=3;
                 break;
              }                  
           }          
        }
        if(b!=3)     
           { 
              cout<<"質數"<           } 
    }      
    return 0;
}

可以請問這樣寫哪裡錯了嗎?

測試過很多都沒出錯

不知道哪裡出了問題?


問題在b值歸0設定,當a=3, sqrt(3)的值小於2,for迴圈不會進去, b的值會是上一次的值,

假設上一次b=3,不會有任何結果輸出,之後的輸入可能就會出現錯誤

 
ZeroJudge Forum