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)

相关推荐

  • 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; // 这个地方不写"=&q

  • Java找出1000以内的所有完数

    完全数:(Perfect Number)又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数为"完全数". 需求:判断并输出1000以内的所有完全数. 题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 ".例如6=1+2+3.编程 找出1000以内的所有完数. public class Wanshu { public static void main(St

  • 输出1000以内的素数的算法(实例代码)

    代码如下所示: 复制代码 代码如下: #include "stdafx.h"#include <iostream> #include <math.h>bool IsSushu(int n){ bool IsSushuFlg = true; if( n <= 1) {  return false; } for( int i = 2; i <= (int)sqrt((double)n); i++ ) {  if( 0 == n % i )  {   Is

  • php输出1000以内质数(素数)示例

    复制代码 代码如下: <?phpfor($i = 2; $i < 1001; $i++) { $primes = 0; for($k = 1; $k <= $i; $k++) if($i%$k === 0) $primes++; if($primes <= 2) // 能除以1和自身的整数(不包括0) echo "<strong>{$i}</strong><br />";}

  • Java生成10个1000以内的随机数并用消息框显示数组内容然后求和输出

    本文最终结果大概是这样的,使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以先用Math.Random()*1000生成1000以内随机数,然后依次存入数组中,然后读取数组,输出随机数,同时进行加法计算,最后将所有结果以消息框形式输出. 程序流程图: 源代码: package 随机数求和; import javax.swing.*; public class Sum { public static void ma

  • C语言例题讲解指针与数组

    目录 1.概要复习 2.指针与数组笔试题 2.1一维数组 2.2字符数组 2.3字符串数组 2.4字符串指针 2.5二维数组 1.概要复习 本篇的内容主要围绕指针与数组.指针与字符串等之间的关系,以及进一步理解sizeof .strlen 的使用与意义. 数组是指具有相同类型元素的集合,字符串常量是一个指向在连续空间里存放的字符的首字符的地址的指针.我们会在下面理解数组与字符串数组的不同. sizeof 是一个操作符,是计算类型空间大小的.strlen 是针对字符串的库函数,用来求字符串的长度.

  • JS实现1000以内被3或5整除的数字之和

    今天在技术群里看到一道这样的提:求1000以内被3或5整除的数字之和.其中看到很有趣的解法二,最开始还是挺迷惑的,后来想了下,再经人指点,就觉得茅塞顿开. 第一种解法很普遍,就是将1000以内的数都遍历一遍,只要有整除3或者整除5的数,就将其加起来,最终得到一个总的和. 让我感兴趣的是第二种解法,这里巧妙运用了数学上的等差数列 一个公差为的等差数列前项的级数为: 第二种方法第一步就用了(a1+an)/3*3,所以就变成了3*(1+333)*333/2,这一步就是把整除3的所有项都加起来. 同理,

  • JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例

    这篇文章主要介绍了JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 斐波那契数列 //求斐波那契数列第n位 var n = parseInt(window.prompt('输入你要求的斐波那契数列的位数')); var first = 1, second = 1, third; if (n > 2) { for (var i = 0; i < n - 2; i++) {

  • python输出100以内的质数与合数实例代码

    具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for temp in range(2,i): if i%temp==0: break print('i=',i,'temp=',temp) elif temp==i-1: p.append(i) print('\n以下打印质数:') print(p) #求合数 list=[] for i in range

  • R语言统计结果输出至本地文件的几种方法示例

    1.sink() 在代码开始前加一行:sink("output.txt"),就会自动把结果全部输出到工作文件夹下的output.txt文本文档.这时在R控制台的输出窗口中是看不到输出结果的.代码结束时用sink()切换回来. 示例: sink("a.txt") x<-rnorm(100,0,1) mean(x) sink() 注:此处输出为mean(x). 2.stargazer() library(stargazer) #导入数据 mydata <-

随机推荐