C语言编程(有耐心的高手来)

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:22:03
题目:
一个数如果恰好等于它的因子之和,这个数就称为"完数".例如,6的因子为1,2,3,而6=1+2+3,因此6是"完数".编程找出1000内的所有完数,并按下面格式输出因子:
6 its factors are 1,2,3

#include <stdio.h>
void main()
{
int i,j,k,t,a,b[999],c,s,p,sum;
sum=0;s=0;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
for(k=1;k<=9;k++)
{
t=100*i+10*j+k;
for(a=1;a<t;a++)
{
if(t%a==0)
b[a-1]=a;
else
b[a-1]=0;
}
for(c=0;c<=998;c++)
{
if(b[c]>0)
{
s=s+b[c];
sum=sum+s;
}
}

if(t==sum)
{
printf("%d its factors are ",t);
for(p=0;p<t;p++)
{
if(b[p]>0)
printf("%d,",b[p]);
else
continue;
}
printf("\n");

/*下面的程序应该是对的,为了让你容易理解我没有大改,给你找出了原因*/
#include <stdio.h>
void main()
{
int i,j,k,t,a,c,s,p,sum;
int b[999]={0}; /*赋初值*/
sum=0;s=0;
for(i=0;i<=9;i++)
{ for(j=0;j<=9;j++)
{ for(k=0;k<=9;k++)
{
t=100*i+10*j+k;
if(t==0) continue;/*k要从0开始但又要去掉t=0的情况*/
for(a=1;a<t;a++) /*求其因子*/
{
if(t%a==0) b[a-1]=a; /*这样的空间浪费有点大*/
else b[a-1]=0;
}
for(s=0,c=0;c<=998;c++) /*所有因子相加*/
{
if(b[c]>0)
{ s=s+b[c];
/*sum=sum+s; 问题在于这句,不能要*/
}
}
sum=s;
if(t==sum) /*求结果*/
{
printf("%d its factors are ",t);
for(p=0;p<t;p++)
{
if(b[p]>0)
printf("%d,",b[p]);
else continue;
}
printf("\n");
}
else continue;
}
}
}
}