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("\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次)。

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

*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-21 01:11:51

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

C语言之基本算法38—格式化输出10000以内的全部完数

//穷举法! /* ================================================================== 题目:求10000以内的全部完数,统计数量并以例如以下格式输出: 28=1+2+4+7+14. 注:完数是除了本身外.其值等于包括1的全部因子之和! 如:28的全部因子是:1,2,4,7,28,除了28外其他因子的和=28,故28是完数! =====================================================

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

运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 !=  不等于 <   小于 >   大于 <=  小于等于 >=  大于等于 1 if a==b: 2 print(1) 3 else: 4 print(2) 赋值运算符 a+=b   等于 a=a+b a-=b          a=a-b a*=b          a=a*b a

PTA输出指定范围内的完数

1 #include <stdio.h> 2 3 int factorsum( int number ); 4 void PrintPN( int m, int n ); 5 6 int main() 7 { 8 int i, m, n; 9 10 scanf("%d %d", &m, &n); 11 if ( factorsum(m) == m ) printf("%d is a perfect number\n", m); 12 if

习题6-3 使用函数输出指定范围内的完数 (20分)

本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0)之间的所有完数.所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子. 函数接口定义: int factorsum( int number ); void PrintPN( int m, int n ); 其中函数factorsum须返回int number的因子和:函数PrintPN要逐行输出给定范围[m, n]内每个完数的因子累加形式的分解式,每个完数占一行,格式为

习题6-3 使用函数输出指定范围内的完数

1 #include <stdio.h> 2 3 int factorsum(int number); 4 void PrintPN(int m, int n); 5 6 int main() 7 { 8 int i, m, n; 9 10 scanf_s("%d %d", &m, &n); 11 if (factorsum(m) == m) printf("%d is a perfect number\n", m); 12 if (fa

C语言值基本算法43—总结

C程序的基本算法共涵盖42个例题,包含了枚举.排列.逻辑判断.迭代.递推.字符串操作.矩阵操作.格式输出等内容. 相关的实现方法有的显得很笨拙,但足够说明问题,而且每个程序都经过作者亲测,保证可以运行.之所以称之为基本算法,就是为了测试基础知识的掌握,都是从原始的角度进行处理,没有运用过于花哨的处理技巧,作者也是在学习中进步,也希望这些代码对于没有基础或者基础薄弱的朋友带来帮助. 至此,基本知识就掌握了,我们常常会听说C的强大,因为它是面向过程的,在数学领域具有极好的应用,有必要进行进一步的学习

C语言格式化输出小结

函数说明 在gcc编程中,我们常用到的字符格式化输出函数是printf的,实际上gcc继承了C语言处理字符具有强大功能的风格,它提供了一系列的格式化输出函数,主要存在两个库函数文件stdio.h/ stdarg.h中,具体函数如下: #include <stdio.h> printf, int printf(const char *format, ...); fprintf, int fprintf(FILE *stream, const char *format, ...); sprintf

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

Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m" #define ECHO_COLOR_GREEN "\033[0;32m" #define debug(fmt, args...) printf(ECHO_COLOR_GREEN"Debug: " fmt "(file: %s, func: %s, l

go语言基础之格式化输出

1.fmt包的格式化输出输入 格式说明 格式 含义 %% 一个%字面量 %b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数 %c 字符型.可以把输入的数字按照ASCII码相应转换为对应的字符 %d 一个十进制数值(基数为10) %e 以科学记数法e表示的浮点数或者复数值 %E 以科学记数法E表示的浮点数或者复数值 %f 以标准记数法表示的浮点数或者复数值 %g 以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出 %G 以%E或者%f表示的浮