关于“相亲数”的算法实现

article/2025/10/8 9:59:40

“相亲数”的介绍

在数学中,“相亲数”是指一对“你中有我,我中有你”的数字,其特点是:
彼此的全部约数和(本身除外)与另一方相等

例如:220和284就是一对相亲数。

220的全部约数和(除掉220本身)相加是:
1+2+4+5+10+11+20+22+44+55+110 = 284

同样,284的全部约数(除掉284本身)相加的和为:
1+2+4+71+142 = 220

关于“相亲数”的研究从古至今都未曾中断过,这篇文章是我将老师所讲的提炼一下并给出拓展的算法。

C语言的算法实现

#define N 10000
main()
{int i,j,k; unsigned s[N];clrscr();//清屏for(i=2;i<N;i++) for(j=1,s[i]=0;j<i;j++) if(i%j==0) s[i]+=j;for(i=2;i<N;i++)for(j=i+1;j<N;j++)if((i==s[j])&&(j==s[i])){printf("%d: ",i);for(k=1;k<i;k++) if(i%k==0) printf("%d ",k); printf("\n");printf("%d: ",j);for(k=1;k<j;k++) if(j%k==0) printf("%d ",k); printf("\n\n");}
}

上面的代码只需要导入函数库,即在开头加上include <stdio.h>就可运行。

程序用来输出10000以内的相亲数,运行结果如下:

这里写图片描述

算法分析

首先声明变量,其中变量名为s的表示含有N个无符号类型数据的数组。然后两个for循环用来计算10000以内每个数的所有约数和,并放入数组中。下面两个for中j变量的初始值为i+1,这是为了防止出现220,284和284,220的重复情况,if语句判断是否约数和等于对方,printf语句输出整个过程。

下面给出j初始值为2的运行结果:

这里写图片描述

以上只是截取了一部分,可以看出有重复的情况,并且运行时间要比原来的久,效率低。

修改版

下面是我们老师布置的作业,要求将后面的两个for循环变成一个循环,我的思路是用一个循环遍历数组下标,同时将数组中每个值赋给另一个变量,这个变量也作为下标来做判断,具体算法如下:

#define N 10000
main()
{int i,j,k; unsigned s[N];clrscr();//清屏for(i=2;i<N;i++) for(j=1,s[i]=0;j<i;j++) if(i%j==0) s[i]+=j;for(i=2;i<N;i++){j=s[i];if(j>N) continue;//if(i==s[j]&&j>i){printf("%d: ",i);for(k=1;k<i;k++) if(i%k==0) printf("%d ",k); printf("\n");printf("%d: ",j);for(k=1;k<j;k++) if(j%k==0) printf("%d ",k); printf("\n\n");}}
}

一开始代码中的①处我写在了下面的for循环中,结果这样在i为5000多的某处会导致j的值超过一万,数组下标越界,后来单独写出来就行了。运行结果与第一次结果相同。

其实随着N的值的增加,数组的开销会很大,运行结果的时间会很长,效率很低,目前没有想到更好的算法,以后想到了再补充。


http://chatgpt.dhexx.cn/article/Nf21dPD0.shtml

相关文章

C#调用Matlab BP神经网络预测数据

Matlab 实现BP网络进行打包(Matlab 版本为 R2022a vs 2019)&#xff1a; matlab 命令窗口输入&#xff1a;deploytool 然后选择 Library Compiler 打开如下窗口&#xff1a; 在Type 框选择 .NET Assembly 在 点加入 添加函数文件 需要修改Class Name 点击右键 选择 Re…

bp神经网络预测模型python,r语言bp神经网络预测

如何建立bp神经网络预测 模型 。 建立BP神经网络预测模型&#xff0c;可按下列步骤进行&#xff1a;1、提供原始数据2、训练数据预测数据提取及归一化3、BP网络训练4、BP网络预测5、结果分析现用一个实际的例子&#xff0c;来预测2015年和2016年某地区的人口数。 已知2009年…

BP神经网络预测(MATLAB自定义函数进行)

功能&#xff1a;7输入1输出 算法&#xff1a;BP神经网络&#xff08;MATLAB自定义函数&#xff09; 电话&#xff1a;13483417110 输入&#xff1a;入炉温度、第一加热段温度、第二加热段温度、均热段温度、第一加热段停留时间、第二加热段停留时间、均热段停留时间 输出&…

BP神经网络预测实现

基本概念 误差反向传播神经网络简称为BP(Back Propagation)网络&#xff0c;它是一种具有三层或三层以上的多层神经网络&#xff0c;每一层都由若干个神经元组成。如图所示为一个BP神经网络的结构图&#xff0c;它的左、右各层之间各个神经元实现全连接&#xff0c;即左层的每…

基于神经网络的房价预测,BP神经网络预测房价

1、如何利用matlab进行神经网络预测 matlab 带有神经网络工具箱&#xff0c;可直接调用&#xff0c;建议找本书看看&#xff0c;或者MATLAB论坛找例子。 核心调用语句如下&#xff1a; %数据输入 %选连样本输入输出数据归一化 [inputn,inputps]mapminmax(input_train); [outpu…

麻雀搜索算法优化BP神经网络预测以及MATLAB代码实现

麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现 文章目录 麻雀搜索算法SSA优化BP神经网络回归预测以及MATLAB代码实现1. 麻雀搜索算法SSA原理1.1 算法灵感来源1.2 算法模型描述 2. SSA优化BP神经网络预测算法流程3. SSA优化BP回归预测的MATLAB实现步骤4. 运行结果与…

bp神经网络预测模型优点,bp神经网络缺点及克服

BP神经网络的核心问题是什么?其优缺点有哪些? 人工神经网络,是一种旨在模仿人脑结构及其功能的信息处理系统,就是使用人工神经网络方法实现模式识别.可处理一些环境信息十分复杂,背景知识不清楚,推理规则不明确的问题,神经网络方法允许样品有较大的缺损和畸变.神经网络的类型…

提高bp神经网络预测精度,bp神经网络收敛速度慢

1、如何提高bp神经网络的预测精度啊 跟你的预测对象有很大关系。 1. 根据你的预测对象的特性选取合适的输入层、输出层和隐层神经元数目。 2. 选择合适的神经网络训练函数。 3. 保证足够的训练样本数据&#xff0c;并且确保这个训练样本数据有足够的精度能够反映需要预测的对象…

(四)BP神经网络预测(上)

BP神经网络适用于机器人控制、组合优化、模式识别、图像信息处理&#xff0c;能够对非线性数据建立精确的模型&#xff0c;对其未来进行预测。其核心思想是&#xff1a;将已预处理好的数据放到神经网络的微分方程进行反复训练&#xff0c;通过大量的训练建立BP神经预测模型&…

基于遗传算法优化BP神经网络预测和分类MATLAB实现-附代码

基于遗传算法GA优化的BP神经网络预测和分类&#xff08;含优化前对比&#xff09; 文章目录 基于遗传算法GA优化的BP神经网络预测和分类&#xff08;含优化前对比&#xff09;1. BP神经网络预测原理简介2. 遗传算法GA优化BP神经网络原理3. GA-BP模型建立3.1 模型与数据介绍3.2 …

用matlab做bp神经网络预测,matlab人工神经网络预测

如何得到神经网络预测结果 20 。 如果你用9——11年的数据不经过预测12——19年的数据就想得到第20年的数据的做法是不合理的&#xff0c;神经网络的预测讲求时间序列的连续性&#xff0c;你可以在编写maltab程序的时候才用递归的方法调用神经网络工具箱&#xff0c;加上对预…

提高bp神经网络预测精度,bp神经网络数据预处理

bp神经网络对输入数据和输出数据有什么要求 p神经网络的输入数据越多越好&#xff0c;输出数据需要反映网络的联想记忆和预测能力。BP网络能学习和存贮大量的输入-输出模式映射关系&#xff0c;而无需事前揭示描述这种映射关系的数学方程。 它的学习规则是使用最速下降法&…

bp神经网络预测模型优点,bp神经网络相关性分析

BP神经网络的可行性分析 神经网络的是我的毕业论文的一部分4&#xff0e;人工神经网络人的思维有逻辑性和直观性两种不同的基本方式。 逻辑性的思维是指根据逻辑规则进行推理的过程&#xff1b;它先将信息化成概念&#xff0c;并用符号表示&#xff0c;然后&#xff0c;根据符…

bp神经网络预测未来数据,bp神经网络数据预处理

如何建立bp神经网络预测 模型 建立BP神经网络预测 模型&#xff0c;可按下列步骤进行&#xff1a;1、提供原始数据2、训练数据预测数据提取及归一化3、BP网络训练4、BP网络预测5、结果分析现用一个实际的例子&#xff0c;来预测2015年和2016年某地区的人口数。 已知2009年——…

bp神经网络数据预测实例,bp神经网络预测数据

BP神经网络预测&#xff0c;预测结果与样本数据的理解。 输入节点数是3&#xff0c;说明输入向量的行数m3&#xff0c;你给的样本只有1行&#xff0c;是不是不全&#xff1f;输出节点只有一个&#xff0c;说明每3个输入数据对应一个预测的输出数据。其实样本数量很少&#xff…

bp神经网络预测模型原理,BP神经网络预测模型

深度学习与神经网络有什么区别 深度学习与神经网络关系2017-01-10最近开始学习深度学习&#xff0c;基本上都是zouxy09博主的文章&#xff0c;写的蛮好&#xff0c;很全面&#xff0c;也会根据自己的思路&#xff0c;做下删减&#xff0c;细化。 五、DeepLearning的基本思想假…

bp神经网络预测模型python,bp神经网络预测模型

如何建立bp神经网络预测 模型 。 建立BP神经网络预测模型&#xff0c;可按下列步骤进行&#xff1a;1、提供原始数据2、训练数据预测数据提取及归一化3、BP网络训练4、BP网络预测5、结果分析现用一个实际的例子&#xff0c;来预测2015年和2016年某地区的人口数。 已知2009年…

BP神经网络预测

BP神经网络预测 1.输入向量与输出向量 我们将前14组国内男子跳高运动员各项素质指标作为输入&#xff0c;即&#xff08;30m行进跑&#xff0c;立定三级跳远&#xff0c;助跑摸高&#xff0c;助跑4-6步跳高&#xff0c;负重深蹲杠铃&#xff0c;杠铃半蹲系数&#xff0c;100m&…

BP神经网络预测模型

一、BP神经网络简单介绍 BP神经网络是一种人工神经网络&#xff0c;其主旨是一种进行分布式并行信息处理的数学模型。 其内部包含一个或多个隐含层。 1、基本概念 感知器 代表BP神经网络中的单个节点。 其包含&#xff1a;输入项、权重、偏置、激活函数、输出。 下图可以看…

BP神经网络如何用历史数据预测未来数据

本文主要为了解决如何用BP神经网络由历史的目标数据与因素数据去预测未来的目标数据。Bp神经网络的具体算法步骤与代码在网络上已经有很多大佬写过了&#xff0c;本文提供了将其应用于预测的方法。&#xff08;附简单直接可使用代码&#xff09; 开始我也在思考&#xff0c;简答…