1096 大美数 (15 分)
若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
输入格式:
输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 100000 的正整数。
输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes,否则输出 No。
输入样例:
3
18 29 40
输出样例:
Yes
No
Yes
解题思路:4个for循环暴力求解
```c
#include<cstdio>
#include<cmath>
int isBeautiful(int m) {
int b[70];
int temp = 0;//如果是大美数字,则为,否则为0.
int j = 0;
for (int i = 1; i <= m; i++) {
if (m % i == 0) {
b[j] = i;
j++;
}
}
//j是数组的程度,遍历输入m的正因数。
// for(int i=0;i<70;i++){
// printf("%d ", b[i]);
// }
// printf("\n");//遍历输出m的正因数,以作检验。
for (int w = 0; w < j - 3; w++) {
for (int x = w + 1; x < j - 2; x++) {
for (int y = w + 2; y < j - 1; y++) {
for (int z = w + 3; z < j; z++) {
int sum = b[w] + b[x] + b[y] + b[z];
if (m % sum == 0)temp = 1;
}
}
}
}//四重循环秘技。
return temp;
}
int main() {
int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if (isBeautiful(a[i]) == 1) {
printf("Yes\n");
}
else {
printf("No\n");
}
}
return 0;
}