题解 | #完数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]); } }