#include <iostream>
using namespace std;
int main()
{
int num;
int i,j=0;
cin>>num;
if (num == 1 )
{
cout<<"非質數"<<endl;
}
else
{
for(i=2;i<num;i++)
{
if(num%i==0)
{
j++;
break;
}
}
if(j==0) { cout<<"質數"<<endl; }
else { cout<<"非質數"<<endl; }
}
system("pause");
}
送出後一直出現TLE
但改成這樣後卻變成WA(line2)
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int num;
int i,j=0;
cin>>num;
if (num == 1 )
{
cout<<"非質數"<<endl;
}
else
{
for(i=2;i<sqrt(num);i++)
{
if(num%i==0)
{
j++;
break;
}
}
if(j==0)
{
cout<<"質數"<<endl;
}
else
{
cout<<"非質數"<<endl;
}
}
system("pause");
}
哪裡錯了呢?
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int num;
while(cin>>num)
{int i,j=0;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0)
{
j++;
break;
}
}
if(j==0)
{
cout<<"質數"<<endl;
}
else
{
cout<<"非質數"<<endl;
}
}
system("pause");
}
基本上就是紅色的部份,需要重複輸入還有 開根號要涵蓋= 還有一點是 題目已經有說過 不會輸入的數>=2 了 所以不用加1個判斷 而且1不是質數