//穷举法!

/*

==================================================================

题目:求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("\n%d:  %-4d=%d",shu+1,n,a[0]);

for(j=1;j<k;j++)

printf("+%d ",a[j]);

printf(".\n");

shu++;

k=0;

}

n++;

}

printf("\n一共%d个",shu);

printf("\n");

}

/*

======================================================================

评:

这道题难点在于输出的格式,完数的推断是一个简单问题,甚至能够用for循环来

实现!

可是要输出题目要求的格式。就必须先求出其全部因子,保存在预先定义的

数组中,先输出n=a[0],紧接着通过for循环输出其余的+因子。在输出"."。

必须注意要一个一个输出,就是推断+输出+又一次初始化后在算下一个n。直到n>N循

环结束(注意不能用for循环。否则会反复输出N次)。

========================================================================

*/

C语言之基本算法38—格式化输出10000以内的全部完数的更多相关文章

  1. Python自动化--语言基础2--运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ! ...

  2. python自动化--语言基础二运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符. 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ...

  3. Golang的格式化输出fmt.Printf

    本文来源:Go by example. Golang的格式化输出 和 C语言的标准输出基本一样,但是增加了一些针对Golang语言的特有数据结构的格式化输出方式. 一下就是实例: package ma ...

  4. C语言中格式化输出的转换说明的fldwidth和precision解析

    首先说什么是C语言的格式化输出,就是printf和它的几个变种(grep -E "v?(sn|s|f)printf").像这些函数都有一个参数format,format中可以加点转 ...

  5. Debug格式化输出----基于C语言

    Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m&qu ...

  6. Go语言从入门到放弃(三) 布尔/数字/格式化输出

    本章主要介绍Go语言的数据类型 布尔(bool) 布尔指对或者错,也就是说bool只有两个值, True 或 False 两个类型相同的值可以使用比较运算符来得出一个布尔值 当两个值是完全相同的情况下 ...

  7. Go 语言 fmt.Sprintf (格式化输出)

    Printf().Sprintf().Fprintf() 函数的区别用法是什么? 都是输出格式化字符串,只是输出到的目标不一样: Printf() 是把格式化字符串输出到标准到标准输出(一般是屏幕,可 ...

  8. go语言基础之格式化输出

    1.fmt包的格式化输出输入 格式说明 格式 含义 %% 一个%字面量 %b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数 %c 字符型.可以把输入的数字按照A ...

  9. C语言 printf格式化输出,参数详解

      有关输出对齐 int main(int argc, char* argv[]){ char insertTime[20] = {"1234567890"}; double in ...

随机推荐

  1. AT1145 ホリドッグ

    洛谷的题解区里竟然没有O(1)做法详解-- 题面就是要判断\(1+2+\dots+n\)是不是素数 很容易让人想到上面的式子事实上等于\(n(n+1)/2\) 根据质数的定义,质数只能被1和自身整除 ...

  2. STM32 USB转串口驱动安装不成功出现黄色感叹号解决方法!

    相信很多人在做USB转串口时出现过串口驱动安装不成功,出现黄色感叹号问题, 出现这种问题一般是驱动安装不成功造成的. 这里我就这个问题总结几个简单的方法. 方法1: 插上USB,利用驱动人生安装驱动. ...

  3. [NIO]dawn之Task具体解释

    在上篇文章中,我们设置好了开发环境,接下来.我们将在了解了Task以及Buffer之后,再開始了解网络编程.我们首先来看看Task task简单介绍 package zhmt.dawn; import ...

  4. C++ 虚函数的缺省參数问题

    前些日子,有个同学问我一个关于虚函数的缺省參数问题.他是从某个论坛上看到的.可是自己没想通.便来找我. 如今分享一下这个问题.先看一小段代码: #include <iostream> us ...

  5. 修改DNS

    解决方案一: 修改/etc/resolv.conf,添加 nameserver 8.8.8.8 nameserver 8.8.4.4 然后停用NetworkManager,service Networ ...

  6. 大量文件时使用ls

    有时一个目录下的文件实在太多, ls的时候就卡住了. 其实, 如果不加排序的话, 就可以迅速的显示文件. ls -f 解释: -f do not sort, enable -aU, disable - ...

  7. dll开发

    _declspec(dllexport) void fun() { }

  8. 移动端fixed后 横竖屏切换时上部或下部出现空隙问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. How To Do @Async in Spring--转

    原文地址:http://www.baeldung.com/spring-async 1. Overview In this article, we’ll explore the asynchronou ...

  10. 模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果)

    模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果) 效果图: 切图地址: https://ss1.bdstatic.com/5eN1bjq8AAUYm2zg ...