题解 | #完数VS盈数#
完数VS盈数
https://www.nowcoder.com/practice/ccc3d1e78014486fb7eed3c50e05c99d
#include <math.h>
#include <stdio.h>
int num(int n){
int a=0;
for(int i=1;i<n;i++){
if(n%i==0){
a+=i;
}
}
//printf("%d:%d ",n,a);
if(a==n){
return 0;//完数
}
if(a>n){
return 1;//盈数
}
else{
return -1;
}
}
int main() {
int a[60]={0},b[60]={0};
int ia=0,ib=0;
int t;
for(int i=2;i<61;i++){
t=num(i);
//printf("*%d* ",t);
if(t==0){
a[ia]=i;
ia++;
}
if(t==1){
b[ib]=i;
ib++;
}
}
//printf("%d %d",ia,ib);
printf("E: ");
for(int i=0;i<ia;i++){
printf("%d ",a[i]);
}
printf("\nG: ");
for(int i=0;i<ib;i++){
printf("%d ",b[i]);
}
}
查看7道真题和解析