zoukankan      html  css  js  c++  java
  • C语言之基本算法38—格式化输出10000以内的全部完数

    //穷举法!
    /*
    ==================================================================
    题目:求10000以内的全部完数,统计数量并以例如以下格式输出:
    28=1+2+4+7+14.
    注:完数是除了本身外。其值等于包括1的全部因子之和!
    如:28的全部因子是:1,2,4,7,28,除了28外其他因子的和=28,故28是完数!
    ==================================================================
    */
    #include<stdio.h>
    #define N 10000
    int ws(int a)
    {
    int i=1;
    int sum=0;
    while(i<a)        //不包括a,由于完数的因子必须小于它本身!
    {
    if(a%i==0)
    sum+=i;
    i++;
    }
    if(sum==a)
    return 1;
    else return 0;
    }
    void main()
    {
    int n=2,i,j,k=0,a[100],shu=0;
    printf("%d以内的完数有:",N);
    while(n<=N)
    {
    if(ws(n))
    {
    for(i=1;i<n;i++)
    if(n%i==0)
    a[k++]=i;
    printf(" %d:  %-4d=%d",shu+1,n,a[0]);
    for(j=1;j<k;j++)
    printf("+%d ",a[j]);
    printf(". ");
    shu++;
    k=0;
    }
    n++;
    }
    printf(" 一共%d个",shu);
    printf(" ");
    }
    /*
    ======================================================================
    评:
    这道题难点在于输出的格式,完数的推断是一个简单问题,甚至能够用for循环来
    实现!

    可是要输出题目要求的格式。就必须先求出其全部因子,保存在预先定义的
    数组中,先输出n=a[0],紧接着通过for循环输出其余的+因子。在输出"."。


    必须注意要一个一个输出,就是推断+输出+又一次初始化后在算下一个n。直到n>N循
    环结束(注意不能用for循环。否则会反复输出N次)。


    ========================================================================
    */

  • 相关阅读:
    HTTPS缓存
    URL中“#” “?” &“”号的作用
    HTML5开发使用Eclipse通过WIFI调试Android程序
    JS判断鼠标是否在三角形内
    html5开发全屏android软件
    修改织梦自动摘要字数
    HTML5移动开发添加APP启动画面
    AJAX读取模板文件并替换模板中的标签
    感慨一下,2001年的游戏在win8上运行正常!
    PC端利用Xshell连接Android上的Termux
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7043659.html
Copyright © 2011-2022 走看看