#7481: _wa?


kevin1997324 (kevin)


#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)



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

要連續輸入特定的數值,才能重現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 (小迷糊)


#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,不會有任何結果輸出,之後的輸入可能就會出現錯誤