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


kevintw0830 (kevintw0830)

學校 : 國立臺北教育大學
編號 : 20224
來源 : [120.127.36.144]
最後登入時間 :
2013-04-17 22:38:48
a007. 判斷質數 | From: [120.127.36.163] | 發表日期 : 2011-09-15 23:01

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

學校 : 臺北市立中正高級中學
編號 : 8414
來源 : [203.64.138.253]
最後登入時間 :
2013-02-27 15:34:10
a007. 判斷質數 | From: [120.107.174.102] | 發表日期 : 2011-09-16 00:45

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

 
ZeroJudge Forum