一个数如果恰好等于它的因子之和,这个数就称为"完数"。编程序找出1000之内的所有完数

2016-06-16 18:10:26  分类: c程序设计第四版谭浩强课后答案  参与:

 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是完数。编程序找出1000之内的所有完数,并按下面格式输出其因子: 6 its factors are

方法1【c源程序】
#define M 1000             /*定义寻找范围*/
#include <stdio.h>
int main()
 {
  int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
  int i,a,n,s;
  for (a=2;a<=M;a++)      /* a是2-1000之间的整数,检查它是否完数 */
   {n=0;                  /* n用来累计a的因子的个数 */
    s=a;                  /* s用来存放尚未求出的因子之和,开始时等于a */
     for (i=1;i<a;i++)    /* 检查i是否a的因子 */
       if (a%i==0)        /* 如果i是a的因子 */
 {n++;                 /* n加1,表示新找到一个因子 */
  s=s-i;               /* s减去已找到的因子,s的新值是尚未求出的因子之和 */
  switch(n)            /* 将找到的因子赋给k1...k9,或k10 */
   {case 1:
       k1=i;  break;   /* 找出的笫1个因子赋给k1 */
    case 2:
       k2=i;  break;   /* 找出的笫2个因子赋给k2 */
    case 3:
       k3=i;  break;   /* 找出的笫3个因子赋给k3 */
    case 4:
       k4=i;  break;   /* 找出的笫4个因子赋给k4 */
    case 5:
       k5=i;  break;   /* 找出的笫5个因子赋给k5 */
    case 6:
       k6=i;  break;    /* 找出的笫6个因子赋给k6 */
    case 7:
       k7=i;  break;   /* 找出的笫7个因子赋给k7 */
    case 8:
       k8=i;  break;    /* 找出的笫8个因子赋给k8 */
    case 9:
       k9=i;  break;   /*找出的笫9个因子赋给k9 */
    case 10:
       k10=i;  break;   /* 找出的笫10个因子赋给k10 */
   }
 }
    if (s==0)
    {
     printf("%d ,its factors are ",a);
     if (n>1)  printf("%d,%d",k1,k2);        /* n>1表示a至少有2个因子 */
     if (n>2)  printf(",%d",k3);             /* n>2表示至少有3个因子,故应再输出一个因子 */
     if (n>3)  printf(",%d",k4);             /* n>3表示至少有4个因子,故应再输出一个因子 */
     if (n>4)  printf(",%d",k5);             /*  以下类似 */
     if (n>5)  printf(",%d",k6);
     if (n>6)  printf(",%d",k7);
     if (n>7)  printf(",%d",k8);
     if (n>8)  printf(",%d",k9);
     if (n>9)  printf(",%d",k10);
     printf("\n");
 }
   }
   return 0;
 }

方法2【c源程序】
#include <stdio.h>
int main()
 {int m,s,i;
  for (m=2;m<1000;m++)
    {s=0;
     for (i=1;i<m;i++)
       if ((m%i)==0) s=s+i;
     if(s==m)
      {printf("%d,its factors are ",m);
       for (i=1;i<m;i++)
  if (m%i==0)  printf("%d ",i);
       printf("\n");
    }
    }
  return 0;
 }

来源:c程序设计第四版谭浩强课后答案

本文链接:http://www.wb98.com/c/post/tanhaoqiang_5.9.html

本站文章搜索:

<< 上一篇下一篇 >>

搜索

网站分类

Tags列表

赞助商链接