#include <iostream>
using std::cin;
using std::cout;
int main(){
int x;
while(cin >> x && 2<=x && x<=2147483647){
int count = 0;
if (x == 2) cout << "質數\n"; 2 是質數
else if (x%2 == 0) cout << "非質數\n"; 偶數是非質數
else{
for (int i=3; i*i<=x; i+=2) if (x%i == 0) count++; 個人想法 i*i<=x 應該等於開根號吧
if (count == 0) cout << "質數\n";
else cout << "非質數\n";
}
}
return 0;
}
不了解怎麼會 TLE 呢 ... 可以請各位幫幫忙解疑嗎 ^^ ?
#include <iostream>
using std::cin;
using std::cout;
#include <math.h>
using namespace std;
int main(){
int x;
while(cin >> x && 2<=x && x<=2147483647){
int run = sqrt(x);
int count = 0;
if (x == 2) cout << "質數\n";
else if (x%2 == 0) cout << "非質數\n";
else{
for (int i=3; i<=run; i+=2) if (x%i == 0) count++;
if (count == 0) cout << "質數\n";
else cout << "非質數\n";
}
}
return 0;
}
這是修改後的 code , 看來原因是出在開根號的位置吧 ?
一個在輸入之後就開根號 ( 也就是決定好 loop 次數 )
一個是在 loop 裡作條件判斷 ( 也就是每次執行 loop 都要檢查條件是否符合 )
以上是小弟的想法 , 希望能給大家或指正
#include
using std::cin;
using std::cout;
int main(){
int x;
while(cin >> x && 2<=x && x<=2147483647){
int count = 0;
if (x == 2) cout << "質數\n"; 2 是質數
else if (x%2 == 0) cout << "非質數\n"; 偶數是非質數
else{
for (int i=3; i*i<=x; i+=2) if (x%i == 0) count++; 個人想法 i*i<=x 應該等於開根號吧
if (count == 0) cout << "質數\n";
else cout << "非質數\n";
}
}
return 0;
}
不了解怎麼會 TLE 呢 ... 可以請各位幫幫忙解疑嗎 ^^ ?
#include
using std::cin;
using std::cout;
int main(){
int x;
while(cin >> x && 2<=x && x<=2147483647){
int count = 0;
if (x == 2) cout << "質數\n"; 2 是質數
else if (x%2 == 0) cout << "非質數\n"; 偶數是非質數
else{
for (int i=3; i*i<=x; i+=2) if (x%i == 0) count++; 個人想法 i*i<=x 應該等於開根號吧
if (count == 0) cout << "質數\n";
else cout << "非質數\n";
}
}
return 0;
}
不了解怎麼會 TLE 呢 ... 可以請各位幫幫忙解疑嗎 ^^ ?