题目: 3,一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。编程找出1000以内的所有完数,并输出到串口,输出格式为:“6=1,2,3” 。 编程思路: 首先定义一个数组,用for循环找出每个数的因子存放数组中,然后判断这个数是否为完数,是完数就打印; 我的代码: int main() { int m,n,i,sum,f,j; int b[10]; Stm32_Clock_Init(9); delay_init(72); uart_init(72,115200); for(n=1;n<=1000;n++) { f=0; sum=0; for(i=1;i<n;i++) { m=n%i; if(m==0) { b[f]=i; sum=sum+i; f++; } } if(n==sum) { printf("%d=%d",n,b[0]); for(j=1;j<f;j++) { printf("+%d",b[j]); } printf("\n"); } } } 欢迎大家提出意见和指正,谢谢! |