zoukankan      html  css  js  c++  java
  • 18.求1000以内的完数

    一个数如果恰好等于他的因字数之和,这个数就称为“完数”,例如,6的因子为1,2,3,而6=1+2+3,因此6是一个“完数”

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 int main()
     4 {
     5     int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
     6     int i,a,n,s;
     7     for(a=2; a<=1000; a++)  //a是2-1000之间的整数,检查它是否为完数
     8     {
     9         n = 0;  //用于累计a的因子个数
    10         s = a;  //s用于存放尚未求出的因子之和,开始对时候等于a
    11         for(i=1; i<a; i++)//检查i是否为a的因子
    12             if(a%i==0)  //如果i是a的因子
    13             {
    14                 n++;     //n加1,表示新找到一个因子
    15                 s = s-i;  //s减去已找到的因子,s的新值是尚未求出的因子数之和
    16                 switch(n)  //将找到的因子赋给k1-k10
    17                 {
    18                 case 1:
    19                     k1 = i;    //找到第一个因子赋给k1
    20                     break;
    21                 case 2:
    22                     k2 = i;   //找出第2个因子赋给k2
    23                     break;
    24                 case 3:
    25                     k3 = i;
    26                     break;
    27                 case 4:
    28                     k4 = i;
    29                     break;
    30                 case 5:
    31                     k5 = i;
    32                     break;
    33                 case 6:
    34                     k6 = i;
    35                     break;
    36                 case 7:
    37                     k7 = i;
    38                     break;
    39                 case 8:
    40                     k8 = i;
    41                     break;
    42                 case 9:
    43                     k9 = i;
    44                     break;
    45                 case 10:
    46                     k10 = i;
    47                     break;
    48                 }
    49             }
    50         if(s==0)
    51         {
    52             printf("%d,Its factors are ",a);
    53             if(n>1) printf("%d,%d",k1,k2);  //n>1表示a至少2个因子
    54             if(n>2) printf(",%d",k3);       //n>2表示a至少3个因子,故应再输出一个因子
    55             if(n>3) printf(",%d",k4);      //n>3表示a至少4个因子,故应再输出一个因子
    56             if(n>4) printf(",%d",k5);
    57             if(n>5) printf(",%d",k6);
    58             if(n>6) printf(",%d",k7);
    59             if(n>7) printf(",%d",k8);
    60             if(n>8) printf(",%d",k9);
    61             if(n>9) printf(",%d",k10);
    62             printf("
    ");
    63         }
    64         }
    65         return 0;
    66 }
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 int main()
     4 {
     5     int a,s,i;
     6     for(a=2;a<1000;a++)   //a是2-1000之间的整数,检查它是否为完数
     7     {
     8         s=0;              //s用于存放因字数之和,初始值为0
     9         for(i=1;i<a;i++)   //检查i是否为a的因子
    10         {
    11             if(a%i==0)      //如果i是a的因子
    12                 s = s+i;    //s因字数相加
    13         }
    14         if(s==a)            //如果因字数之和等于该数
    15         {
    16             printf("%d,its factors are ",a);
    17             for(i=1;i<a;i++)//依次输出因子数之和
    18             if(a%i==0)
    19             printf("%d",i);
    20             printf("
    ");
    21         }
    22     }
    23         return 0;
    24 }
  • 相关阅读:
    第一次作业
    第0次作业
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业
    第4次作业
    第3次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/spore/p/10334160.html
Copyright © 2011-2022 走看看