C语言例题之输出1000以内的所有完数
一个数如果恰好等于它的各个因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程找出1000之内的所有完数,并按下面的格式输出其因子:
6 its factors are 1,2,3
#include "stdio.h" void main() { int i, j, sum, k; for (i = 2; i <= 1000; i++) { // 每判断一个数时,将sum置为0 sum = 0; // 这个地方不写“=”,排除这个数自身 真因子指的是除了自身以外的约数,完数概念中的“因子”是“真因子” for (j = 1; j < i; j++) { // 如果能被整除,则j即为i的因子 if (i % j == 0) { // 将这个数的各个因子加起来 sum += j; } } // 说明这个数是完数,找到其因子并按照规定格式输出即可 if (sum == i) { // 输出前半部分 “x its factors are” printf("%d its factors are ", i); // 输出这个数的每一个因子 for (k = 1; k < i; k++) { if (i % k == 0) { printf("%d,", k); } } // 光标退到最后一个逗号位置之上然后输出空格使逗号消失 printf("\b "); // 换行 printf("\n"); } } }
运行结果:
初学C语言,如有错误,还望指正,因考试需要,代码运行环境为:
不同编译器和不同版本C语言代码略有不同。
附:1000以内所有完数,并打印出因子——C语言
完数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完数”。
// 完数 真因子 #include <stdio.h> int main(){ int i,j,k; printf("1000以内的所有完数:\n"); for(i=1;i<=1000;i++){ int sum=0; for(j=1;j<=i/2;j++){ if(i%j == 0){ sum += j; // 把所有的因子全部加起来 } } if(sum == i){ // 加起来的因子和如果等于i,就是完数 printf("%d its factors are: ", i); for(k=1;k<=i/2;k++){ if(i%k == 0){ printf("%d, ", k); } } printf("\n"); } } return 0; }
总结
到此这篇关于C语言例题之输出1000以内的所有完数的文章就介绍到这了,更多相关C语言输出1000内所有完数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)