C语言实现求亲密数代码及解析

栏目: C · 发布时间: 6年前

内容简介:如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。根据问题描述,该问题可以转化为:给定整数A,判断A是否有亲密数。为解决该问题,首先定义变量a,并为其赋初值为某个整数。则按照亲密数定义,要判断a中存放的整数是否有亲密数,只要计算出该整数的全部因子的累加和,并将该累加和存放到另一个变量b中,此时b中存放的也是一个整数。再计算b中存放整数的全部因子的累加和,将该累加和存放到变量n中。

问题描述

如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。

问题分析

根据问题描述,该问题可以转化为:给定整数A,判断A是否有亲密数。

为解决该问题,首先定义变量a,并为其赋初值为某个整数。则按照亲密数定义,要判断a中存放的整数是否有亲密数,只要计算出该整数的全部因子的累加和,并将该累加和存放到另一个变量b中,此时b中存放的也是一个整数。再计算b中存放整数的全部因子的累加和,将该累加和存放到变量n中。

若n等于a则可判定变量a和b中所存放的整数是亲密数。

算法设计

计算数A的各因子的算法:用A依次对i(i的范围可以是1〜A-1、1〜(A/2-1)中之一) 进行模(“%”,在编程过程中一定注意求模符号两边参加运算的数据必须为整数)运算,若模运算结果等于0,则i为A的一个因子加;否则i就不是A的因子。将所求得的因子累到变量B。

接下来求变量B的因子:算法同上,将B的因子之和累加到变量n。根据亲密数的定义判断变量n是否等于变量A(if(n==a)),若相等,则A和B是一对亲密数,反之则不是。

程序流程图:

C语言实现求亲密数代码及解析

下面是完整的代码:

#include<stdio.h>

int main()

{

int a, i, b, n;

printf("数字小于100000的亲密数对有:\n");

for( a=1; a<100000; a++ )  /*穷举100000以内的全部整数*/

{

for( b=0, i=1; i<=a/2; i++)  /*计算数a的各因子,各因子之和存放于b*/

if(!(a%i))

b+=i;

for( n=0, i=1; i<=b/2; i++ )  /*计算b的各因子,各因子之和存于n*/

if(!(b%i))

n+=i;

if(n==a && a<b)  /*使每对亲密数只输出一次*/

printf("%4d--%4d\n", a, b);  /*若n=a,则a和b是一对亲密数,输出*/

}

return 0;

}

运行结果:

数字小于100000的亲密数对有:

220-- 284

1184--1210

2620--2924

5020--5564

6232--6368

10744--10856

12285--14595

17296--18416

63020--76084

66928--66992

67095--71145

69615--87633

79750--88730

C语言实现求亲密数代码及解析

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-12/155863.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

进化式运营:从互联网菜鸟到绝顶高手

进化式运营:从互联网菜鸟到绝顶高手

李少加 / 电子工业出版社 / 2016-11 / 59

互联网运营作为一个新兴的岗位,一方面它是企业的核心岗职,身负重任,另一方面,又由于其短暂的历史,缺乏成熟体系的工作方法论,而目前业界主流的运营方法却是从企业视角出发,存在极大的改进空间。 《进化式运营:从互联网菜鸟到绝顶高手》作者基于自身十年的互联网洞察、实践经验,并融合了信息论、心理学、经济学、管理学、甚至包括生态学、进化论等跨学科跨学业的知识,从无到有地构建了一套全新的互联网运营体系:基......一起来看看 《进化式运营:从互联网菜鸟到绝顶高手》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具