目录
一【题目描述】
若正整数 N N N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
二【题目示例】
输入格式:
输入在第一行中给出正整数 K ( ≤ 10 ) K(≤10) K(≤10),随后一行给出 K K K 个待检测的、不超过 1 0 4 10^4 104 的正整数。
输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。
输入样例:
3
18 29 40
输出样例:
Yes
No
Yes
三【解题思路】
1.四层for循环
2.10可以被5整除,5可以整除10,注意整除的理解,不然写反了只能13分
四【代码实现】
#include<iostream>
#include<cstdio>
using namespace std;
bool isBeauty(int x){
int a[1000];
int index=0;
for(int i=1;i<=x;i++){
if(x%i==0){
a[index++]=i;
}
}
if(index<4) return false;
for(int i=0;i<index;i++){
for(int j=i+1;j<index;j++){
for(int k=j+1;k<index;k++){
for(int z=k+1;z<index;z++){
int sum=a[z]+a[k]+a[j]+a[i];
if(sum%x==0) return true;
}
}
}
}
return false;
}
int main(){
int n;cin>>n;
while(n--){
int x;
scanf("%d",&x);
if(isBeauty(x)) printf("Yes\n");
else printf("No\n");
}
}