7-1 大美数 (15 分)
若正整数 N 可以整除它的 4 个不同正因数之和,则称这样的正整数为“大美数”。本题就要求你判断任一给定的正整数是否是“大美数”。
输入格式:
输入在第一行中给出正整数 K(≤10),随后一行给出 K 个待检测的、不超过 10?4?? 的正整数。
输出格式:
对每个需要检测的数字,如果它是大美数就在一行中输出 Yes
,否则输出 No
。
输入样例:
3
18 29 40
输出样例:
Yes
No
Yes
1 #include<cstdio> 2 #include<cmath> 3 int isBeautiful(int m){ 4 int b[70]; 5 int temp=0;//如果是大美数字,则为,否则为0. 6 int j=0; 7 for(int i=1;i<=m;i++){ 8 if(m%i==0){ 9 b[j]=i; 10 j++; 11 } 12 } 13 14 //j是数组的程度,遍历输入m的正因数。 15 // for(int i=0;i<70;i++){ 16 // printf("%d ", b[i]); 17 // } 18 // printf("\n");//遍历输出m的正因数,以作检验。 19 20 for(int w=0;w<j-3;w++){ 21 for(int x=w+1;x<j-2;x++){ 22 for(int y=w+2;y<j-1;y++){ 23 for(int z=w+3;z<j;z++){ 24 int sum=b[w]+b[x]+b[y]+b[z]; 25 if(m%sum==0)temp=1; 26 } 27 } 28 } 29 }//四重循环秘技。 30 return temp; 31 } 32 int main(){ 33 int n; 34 scanf("%d", &n); 35 int a[n]; 36 for(int i=0;i<n;i++){ 37 scanf("%d", &a[i]); 38 if(isBeautiful(a[i])==1){ 39 printf("Yes\n"); 40 } 41 else{ 42 printf("No\n"); 43 } 44 } 45 return 0; 46 }
原文地址:https://www.cnblogs.com/genghongjun/p/10485251.html
时间: 2024-10-07 13:03:18