#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a;
if(a%3==0&&a%5==0&&a%7==0) cout<<"3 5 7";
if(a%3==0&&a%5==0) cout<<"3 5";
if(a%5==0&&a%7==0) cout<<"5 7";
if(a%3==0&&a%7==0) cout<<"3 7";
if(a%3==0) cout<<"3";
if(a%7==0) cout<<"7";
if(a%5==0) cout<<"5";
if(a%3!=0&&a%5!=0&&a%7!=0) cout<<"n";
return 0;
}
共 1 条回复
你的代码中存在一个问题:当数字能同时满足多个条件时(例如,同时被3和5整除,也被7整除),你的代码会输出所有满足条件的组合,而不是仅输出最高满足条件(即同时被3、5、7整除)。此外,你的代码没有考虑到在输出完一个满足条件的组合后应该停止后续的判断,以避免输出多余的结果。
为了修正这个问题,您可以使用else if语句来确保在找到第一个满足条件的组合后停止进一步的检查。下面是修改后的代码:
#include
using namespace std;
int main(){
int a;
cin >> a; if(a % 3 == 0 && a % 5 == 0 && a % 7 == 0) {
cout << "3 5 7";
} else if(a % 3 == 0 && a % 5 == 0) {
cout << "3 5";
}
else if(a % 5 == 0 && a % 7 == 0) {
cout << "5 7";
}
else if(a % 3 == 0 && a % 7 == 0) {
cout << "3 7";
} else if(a % 3 == 0) {
cout << "3";
}
else if(a % 7 == 0) {
cout << "7";
}
else if(a % 5 == 0) {
cout << "5";
} else {
cout << "n";
}
} 这样,当找到一个满足条件的组合时,程序就会输出该组合并结束,不会继续检查后续的条件。这样可以确保输出的结果始终是最高的满足条件,即按照题目要求输出。