首页 > 编程语言 >探索数学之美:亲和数与程序实现

探索数学之美:亲和数与程序实现

时间:2024-09-26 16:27:07浏览次数:9  
标签:程序实现 sum 之美 iSum int 因子 亲和数 220

摘要:本文以220和284的奇妙邂逅为引,探索了亲和数的神秘世界,并用C语言编织了一个寻找数字间“友谊”的程序。

定义

亲和数,指两个正整数中,彼此的全部约数之和(本身除外)与另一方相等

比如

  • 220的所有因子之和(去除自身),为284
  • 284的所有因子和(去除自身),刚好也为220
  • 这样,我们就把它们两个称为一对亲和数

程序设计思路

设循环数为i

  1. 提取i的所有因数(除去自身),并将其求和,得到iSum
  2. 提取iSum的所有因子(出去自身),得到sumSum
  3. 将iSum与sumSum进行比较
  1. 相等,则i与iSum为一对亲和数
  2. 不相等,则将i自增后,返回步骤1,继续循环

现在,我们已经理清了思路,并做好了程序设计。

来打开编辑器爽一下吧!

代码实现

#include <stdio.h>
#include <stdbool.h>

//设置寻找的范围
#define MAX 10000
#define MIN 0

//求一个数的所有因子(除自身)
int GetDivSum(int x)
{
	int i = 0;
	int sum = 0;

	for (i = 1; i < x; i++)
	{
		if (x % i == 0)
		{
			sum += i;
		}
	}

	return sum;
}

int main()
{
  //控制所有数字都参与遍历
	int i = 0;
  //控制数组的循环,主要用与去重
	int j = 0;
	int k = 0;

	int numberOther = 0;
	int divSum = 0;
	int temp = 0;
	int affinityNumber[2][20] = { 0 };
	int indexAffinity = 0;
	bool flag = false;

	//找出范围内的所以亲和数
	for (i = MIN; i <= MAX; i++)
	{
		numberOther = GetDivSum(i);

    //去除一些“亲和数”为本身的数,这些数不能被视为亲和数
		//因为亲和数是一对数,也就是2个不同的数字
		if (numberOther != i)
		{
      //判断是否为亲和数
			if (GetDivSum(numberOther) == i)
			{
				flag = true;

				//判断是否已经有这组亲和数
				//若已经存在,则跳过重复的这组
				for (k = 0; affinityNumber[0][k] != 0; k++)
				{
					for (j = 0; j < 2; j++)
					{
						if (affinityNumber[j][k] == numberOther)
						{
							flag = false;
							break;
						}
					}
				}
				
        //找到新的亲和数
				if (flag)
				{
					//将亲和数存入数组
					affinityNumber[0][indexAffinity] = i;
					affinityNumber[1][indexAffinity] = numberOther;
					indexAffinity++;

					printf("%d 和 %d 是一对亲和数\n", i, numberOther);
				}
			}
		}

	}

	return 0;
}

运行结果

探索数学之美:亲和数与程序实现_#define

结论

本文通过C语言程序成功探索了亲和数,展示了编程在解决数学问题中的应用,加深了对数学之美的认识。

标签:程序实现,sum,之美,iSum,int,因子,亲和数,220
From: https://blog.51cto.com/xuwenda/12119794

相关文章

  • 毕业设计选题|基于微信小程序实现戏曲文化苑系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 毕业设计选题|基于微信小程序实现戏曲文化苑系统
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与......
  • 代码规范&《数学之美》读后感
    大厂代码规范:一:代码要有比较良好的可读性,在必要的地方需要加上注释,一般较复杂的循环程序或函数要适当添加注释。代码不单单是给自己看也是给别人看的,大家读得懂自己的代码可以更好地发现问题并一起解决从而提高编程效率。二:一些称谓尽量少用ABC代替多使用一些有针对意义的词来......
  • 毕业设计选题参考|基于微信小程序实现养老院管理系统
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 利士策分享,细品礼仪之美:在日常中优雅相处的艺术
    利士策分享,细品礼仪之美:在日常中优雅相处的艺术在当今这个快节奏、高压力的社会里,人与人之间的交往似乎被简化成了快餐式的信息交流。然而,根植于文化深处的礼仪之花,依然是促进社会和谐、深化人际关系的宝贵财富。它不仅是对他人的尊重,更是个人修养的展现。以下,我们将探......
  • 数据结构之美-深入理解树形结构
    一认识树形结构树形结构是一种广泛应用的非线性数据结构,它在计算机科学和日常生活中都有广泛的应用。比如文件系统,邮件系统,编译器语法树,决策树,网络通信,甚至机器学习当中,都有树形数据结构的影子。本文旨在梳理日常用到的各类树形结构以及其优点和劣势,让渎者对树形结构有一个深入......
  • 机器学习中的聚类艺术:探索数据的隐秘之美
    一什么是聚类聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。聚类直观上来......
  • 编码规范&阅《数学之美》有感
    作为计算机专业的大学生在深入学习编写代码前,我认为应当了解一些大公司内部编码规范的核心要素,遵守这些编码规范不仅有助于提高代码质量,而且也是专业发展的必要条件。通过这些规范,可以更好地帮助自己打牢基础,养成良好的编程习惯,同时也为日后进入职场做准备,以适应不同公司的编程文......
  • 信息的度量-读《数学之美》第六章有感
    信息的度量-读《数学之美》第六章有感  《数学之美》是一本很通俗易懂的介绍数学和算法在生活中的应用的一本书。今天着重来谈一谈他的第六章。  在看到目录时我一眼便看到了他的第六章所提到的信息熵,因为我在学校的大数据可视化的通识课上了解过这一概念。老师当时举了个谈......
  • 中秋之美——html5+css+js制作中秋网页
    中秋之美——html5+css+js制作中秋网页一、前言二、功能展示三、系统实现四、其它五、源码下载一、前言八月十五,秋已过半,是为中秋。“但愿人长久,千里共婵娟”,中秋时节,气温已凉未寒,天高气爽,月朗中天,正是观赏月亮的最佳时令。古人把圆月视为团圆的象征,因此,又称八月十......