#5800: 為何Line 10就WA?


kin1010hk (kin1010hk)

學校 : PLKCLSCMC
編號 : 20061
來源 : [220.241.227.11]
最後登入時間 :
2011-09-21 15:58:10
a007. 判斷質數 | From: [223.16.69.128] | 發表日期 : 2011-09-10 21:39

本人使用C++,程式碼如下:

#include <iostream>
using namespace std;
int main () {
    int x;
    while (cin >> x) {
          if (x%2==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%3==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%5==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%7==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%11==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) {
                     cout << "非質數" << endl;
                     }
          else {
               cout << "質數" << endl;
               }
}
} 為何在Line 10 就WA? 
#5801: Re:為何Line 10就WA?


tigeryangname (LF2magic)

學校 : 亞東技術學院
編號 : 14455
來源 : [123.51.167.56]
最後登入時間 :
2021-10-15 17:57:25
a007. 判斷質數 | From: [114.43.109.19] | 發表日期 : 2011-09-10 22:10

本人使用C++,程式碼如下:

#include
using namespace std;
int main () {
    int x;
    while (cin >> x) {
          if (x%2==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%3==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%5==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%7==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%11==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) {
                     cout << "非質數" << endl;
                     }
          else {
               cout << "質數" << endl;
               }
}
} 為何在Line 10 就WA?

路過~召喚高人(?) 
#5822: Re:為何Line 10就WA?


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

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

本人使用C++,程式碼如下:

#include
using namespace std;
int main () {
    int x;
    while (cin >> x) {
          if (x%2==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%3==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%5==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%7==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11 || x%11==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) {
                     cout << "非質數" << endl;
                     }
          else {
               cout << "質數" << endl;
               }
}
} 為何在Line 10 就WA?
驚訝if中的條件太過混亂了,而且沒適當加入括號。
if ((x%2==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) || (x%3==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) || (x%5==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) || (x%7==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11) || (x%11==0 && x!=1 && x!=2 && x!=3 && x!=5 && x!=7 && x!=11)
不過就算這樣改還是不行,如果當x等於1或169(例子很多),就掛掉了。還是請從質數的定義下手吧。 
ZeroJudge Forum