若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
输入格式:
输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 10
4
的正整数。
输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。
输入样例:
3
18 29 40
输出样例:
Yes
No
Yes
#include<iostream>
using namespace std;
int main(void){
int n,m;
cin>>n;
for(int i = 1;i <= n;i++){
cin>>m;
//约数位置
int cnt = 0;
//装约数
int a[10005] = {0};
for(int j = 1;j <= m;j++){
if(m%j == 0){
a[cnt++] = j;
}
}
if(cnt < 4){
cout<<"No"<<endl;
continue;
}
int flag = 0;
for(int x = 0;x < cnt;x++){
for(int y = x+1;y < cnt;y++){
for(int z = y+1;z < cnt;z++){
for(int w = z+1;w < cnt;w++){
if((a[x]+a[y]+a[z]+a[w])%m == 0){
flag = 1;
break;
}
}
if(flag) break;
}
if(flag) break;
}
if(flag) break;
}
if(flag) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}