#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;
}
可以請問這樣寫哪裡錯了嗎?
測試過很多都沒出錯
不知道哪裡出了問題?
這讓我想到遊戲的密技^^
要連續輸入特定的數值,才能重現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;
}
以上空白
#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,不會有任何結果輸出,之後的輸入可能就會出現錯誤