打印指定数字以内的所有完数——C语言实现

导读:本篇文章讲解 打印指定数字以内的所有完数——C语言实现,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

题目

明确完数定义:如果一个数除它自身之外,它的所有的因子的和等于它本身,这个数即是完数。例如:6的因子有1,2, 3 ,6,除本身以外,6=1+2+3,所以6就是一个完数。现在要求输入一个指定数字,打印该数字以内所有的完数。

解析:

无论输入何数,1始终是个完数,所以直接输出不用考虑。这里要注意的是,在累加因子之和时,在每一次内循环开始前要将累加器sum重置为0,否则它将带着上一个外循环所得的因子之和进行下一次内循环而导致出错。

代码如下:

#include"stdio.h"
int main()
{
	int i,j,sum;
	long int n;
	printf("请输入指定数字:\n");
	scanf("%ld",&n);
	printf("1 its factors are 1\n");
	for(i=2;i<n;i++)
	{
		sum=0;//累加器重置(关键点) 
		for(j=1;j<i;j++)
		   if(i%j==0)
		     sum+=j;//累加该数字的所有因子 
		if(sum==i) //判断是否为完数 
		{
			printf("%d its factors are ",i);
			for(j=1;j<i;j++)
			{
			   if(i%j==0)
				 printf("%d ",j);
			}
			printf("\n");
		}
	}
	return 0;
} 

调试结果

在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93513.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!