#5821: WA (line:1) 答案不正確


kevintw0830 (kevintw0830)


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


WA (line:1)
答案不正確
您的答案為: 非質數 正確答案為: 質數
#5825: Re:WA (line:1) 答案不正確


longbiau ((~o ̄▽ ̄)o Summer)


#include
#include
using namespace std;  
int main() {
float a,b,f;
while( cin >> a){
f=1;
b=sqrt(a);
for(int i=2;i<=b && f==1;i++){
if( (int) a%i == 0) f=0;
}
if(f==1) cout << "質數" << endl;
if(f==0) cout << "非質數" << endl;
}
    return 0;
}


WA (line:1)
答案不正確
您的答案為: 非質數 正確答案為: 質數

浮點數誤差或強制轉型(大轉小)的問題。
sqrt(169)不見得是13,可能是12.999999。
2147483647(float)強制轉成int也不見得就一定是2147483647(int)。