新水浒张清:这道题用c语言怎么编阿

来源:百度文库 编辑:高考问答 时间:2024/05/01 23:18:21
6.7 一个数如果正好等于他的因子之和,这个数就是“完数“。例如,6的因子为1 2 3 ,而6=1+2+3,因此6是完数,编成找出1000以内的所有完数,并安下面各市输出其因子:6 its factors are 1.2.3

int* ss(int n, int *p);//求正整数的质因数
??void main()
??{
?? int i,sum=1,j,*a,p;
? for(i=6;i<1000;i++)
?? {
?? a=ss(i,&p);
?? for(j=0;j<p;j++,a++)
?? sum+=*a;
?? if(sum==i)
{
?? printf("%d its factors are ",i);
for(j=0;j<p;j++) printf("%d.",a[j]);
?? }
??}
??int* ss(int n, int *p)
??{
?? int k=2,sum=1,i=0,a[500]={0};
?? //printf("Please enter a num:\n");
?? //scanf("%d",&n);
?? while(n>=k)
?? {
?? if(n==k)
?? {
?? //printf("%d\n",k);
?? a[i++]=k;
?? break;
?? }
?? else
?? if(n%k==0)
?? {
?? //printf("%d\n",k);
?? a[i++]=k;
?? n/=k;
?? }
?? else
?? if(n%k!=0)
?? k+=1;
?? };
*p=i;
?? return a;
??}