请问各位大佬为啥我这个程序15输出是质数,洛谷在线IDE C++11

B2077 角谷猜想

DDW17 @ 2023-07-16 20:54:59

#include<iostream>
using namespace std;
int main(){
    int a;
    cin>>a;
    for(int i=2;i<=100;i++){
        if(a%i==0 & a!=i){
            cout<<"合数";
            break; 
        }
        if(i == 100){
            cout<<"质数";
        }
    if(a%2==0&&a%3==0&&a%5==0&&a%7==0&&a%11==0&&a%13==0&&a%17==0&&a%19==0&&a%23==0&&a%29==0){
        cout<<"合数"; 
    }   else{
        cout<<"质数"; 
    } 
    return 0 ;
}
}


by DDW17 @ 2023-07-16 20:57:16

file:///C:/RECYCLE.BIN/S-1-5-21-4264038051-2030753767-2825738539-500/R6YZIZ0.png 不知道为什么打不开,重发一个


by DDW17 @ 2023-07-16 20:59:32

但是我输入无论12还是16都是合数,我输入15无论如何都是质数


by cff_0102 @ 2023-07-16 21:00:09

首先,你的第一个判断条件是 a%i==0 & a!=i,这相当于 a%i==0!=i

应该将 & 改为 &&

其次,你的第二个判断是 a%2==0&&a%3==0&&a%5==0&&a%7==0&&a%11==0&&a%13==0&&a%17==0&&a%19==0&&a%23==0&&a%29==0

意思是,同时能被2,3,5,7,11,...,29整除的数

但实际上应该是能被2或3或5或7整除的数

所以把 && 改为 ||


by Terrible @ 2023-07-16 21:05:53

建议放到题目总版。


by a1co0av5ce5az1cz0ap_ @ 2023-07-16 21:06:57

@cff_0102 return在循环内部!


by cff_0102 @ 2023-07-16 21:08:22

@ACaCaca_ 牛牛牛


by DDW17 @ 2023-07-18 20:45:40

@cff_0102 收到,谢谢大佬的解答,我会更加努力的(


by DDW17 @ 2023-07-18 20:47:24

@ACaCaca_ 谢谢大佬(


|