文档章节

小蚂蚁学习C语言(37)——题目——求出1000以内的所有完数以及它的因子

嗜学如命的小蚂蚁
 嗜学如命的小蚂蚁
发布于 2016/01/28 19:20
字数 520
阅读 320
收藏 1

编写程序:

    输出1000以内的所有完数及其因子。所谓完数是指一个整数的值等于它的因子之和,例如6的因子是1,2,3,而6=1+2+3,故6是一个完数。

/*
	求出1000以内的所有完数以及它的因子
*/
# include <stdio.h>

int main( void )
{
	int i, j, sum;
	
	/*
		第一个循环,检查从1到1000中的每一个数字是不是完数
		如果是完数,输出完数和它所有的因子
	*/
	for( i = 1; i <= 1000; ++i )
	{
		/*
			检查该数字是否是完数
			方法:从1到i-1,依次取余,余数为0,说明是它的公约数,
				累加公约数,最后的值如果等于i,这说明i就是完数。
		*/
		sum = 0;
		for( j = 1; j < i; ++j )
		{
			if( i%j == 0 )
			{
				sum += j;
				
			}
		}
		if( sum == i )
		{
			printf( "完数是:%d,它的因子是:", i );
			
			/* 
				这个for循环是将其所有因子取出
				和第22行的for循环思路是一样的		
			*/
			for( j = 1; j < i; ++j )
			{
				if( i%j == 0 )
				{
					printf( "%d ", j );
				}
			}
			
			printf( "\n" );
		}
		
	}
	
	return 0;
}
/*
	VC++6.0输出的结果是
	=================================================
	完数是:6,它的因子是:1 2 3
	完数是:28,它的因子是:1 2 4 7 14
	完数是:496,它的因子是:1 2 4 8 16 31 62 124 248
	=================================================
	总结:
		完数很轻松的就输出出来了,怎么把因子给分别输出出来让我想来半天。
		其实很简单,脑子一下子没转过来弯
		第10行的for循环,就是把它的因子相加,得到的sum,一旦sum成立,
		说明拿到的所有j都是因子,在第20行输出完数之后,再把第10行for循环
		拿到的所有j,输出就完事了。
		(虽然感觉时间复杂度好高~~~~(>_<)~~~~)
		
*/

    时间复杂度确实好高,不知道还有没有更好的办法来实现这个程序。

    

    学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog



© 著作权归作者所有

共有 人打赏支持
嗜学如命的小蚂蚁
粉丝 142
博文 161
码字总数 100864
作品 0
郑州
程序员
私信 提问
小蚂蚁学习C语言(29)——C语言补码(下)

解释以下问题: vc++6.0中一个int类型的变量所能存储的数字的范围是多少 int 类型变量所能储存的最大整数用十六进制表示是: 7FFFFFFF int 类型变量所能存储的绝对值最大的负整数用十六进制表...

嗜学如命的小蚂蚁
2015/12/25
44
0
考研复试系列——第九节 数论基础

考研复试系列——第九节 数论基础 引言 该部分内容来源于 《王道论坛》 。 写个算法,对 2 个小于 1000000000 的输入,求结果。 特殊乘法举例:123 45 = 14 +15 +24 +25 +34+3*5 样例输入: ...

cassiepython
2017/03/09
0
0
各种基本算法实现小结(七)—— 常用算法

各种基本算法实现小结(七)—— 常用算法 (均已测试通过) ====================================================================== 1、判断素数 测试环境:VC 6.0 (C) 运行结果: ====...

长平狐
2013/01/06
220
0
C语言编程——有趣的数(使用动态规划实现)

虽然大三上学期学习了动态规划算法,可也只是简单地了解什么是动态规划算法,纸上谈兵而已,并没有真正地将这种算法运用到解题中,没有真正体会到动态规划算法的妙处。最近在准备CCF,有一道...

风一样的程序媛
2016/04/05
377
0
砝码分盐问题——从数学和计算机的角度分析(7)

本博客(http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Content 0.问题 1.一些方法 2.从数学的角度分析 3.能否编程计算? 4....

晨曦之光
2012/03/09
108
0

没有更多内容

加载失败,请刷新页面

加载更多

hanlp在Python环境中的安装失败后的解决方法

Hanlp是由一系列模型与算法组成的javag工具包,目标是普及自然语言处理再生环境中的应用。有很多人在安装hanlp的时候会遇到安装失败的情况,下面就是某大神的分享的在python环境中安装失败的...

左手的倒影
12分钟前
0
0
【更新】Infragistics Ultimate UI for WPF v18.2(二):分类图

下载Infragistics Ultimate UI for WPF最新版本 Infragistics Ultimate UI for WPF是一款提供高速的网格和图表,轻松创建仿Office应用程序的WPF界面框架,从广度和深度两方面使得开发者在缩短...

电池盒
12分钟前
0
0
android沉浸式状态栏封装—教你玩出新花样

项目中我们有时候都要用的透明状态栏(这里也成沉浸式状态栏),今天介绍一个gyf-dev写的一个封装状态栏开源框架 效果图如下: 正文 从Android4.4开始,才可以实现状态栏着色,并且从5.0开始...

终端研发部
13分钟前
0
0
Java关键字之transient、native

transient Java中提供Serilizable接口,实现该接口的对象就可以被序列化。如果这个类的有些属性不需要被序列化,使用transient关键修饰字段即可。 native native关键字说明其修饰的方法是一个...

勇敢的飞石
15分钟前
0
0
canal 修改mysql数据后Java客户端无反应的问题解决方案

canal client例子: package com.study.canal;import java.net.InetSocketAddress;import java.util.List;import com.alibaba.otter.canal.client.CanalConnector;import com.al......

xtof
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部