[C/C++/初学者]500以内的亲密数对(VS2012)

news2024/11/23 3:53:12

在开始编写程序之前,我们需要了解一个东西。

何为亲密数对?

简单来说,就是数a的正因子数除本身外)等于数b的正因子数除本身外)。

符合这项条件的两个数,我们称他们为亲密数对。

那么,既然规则已经知晓,那么接下来就开始实操了。


首先我们需要两个for循环,用于判断两个数之间的关系,我们需要定义两个int型变量,

又因为我们需要判断正因子数之和与其本身的关系,我们又需要定义两个int型变量。

所以我们一共需要定义四个int型变量。

以下为定义变量:

int i,j,a=0,b=0;

printf("500以内的所有亲密数如下所示:\n");

以下为for的循环嵌套结构:

for (i=1;i<=500;i++)
	{
		for (j=1;j<=500;j++) 
		{
           ...
		}
	}

在for循环里,我们需要完成以下步骤:

  1. 判断两个数是否相同,因为亲密数对不可为两个相同的数。
  2. 判断正因子数是否相同,这里就需要计算正因字子数的和,并需要对两个数的正因子数的和进行判断了。
  3. 判断此前是否已经有类似的答案,比如:220和280是亲密数对,那我们后面能再说280和220是亲密数对嘛?这不是一种情况嘛?故我们需要排除这种类似的答案。
            //若两个数相同,则退出本层循环
            if (i==j)
                continue;

            //判断正因子数是否相同
            if (Sum(i)==j&&i==Sum(j)) 
            {
                
                //判断是否存在此前已经有相同答案的情况,若有,则跳出
                if (j==a&&i==b)
                {
                    continue;
                }
                

                //若符合相应条件,则输出对应数据

                printf("%4d和%4d为亲密对数\n", i, j);
                
                //m,n记录符合条件的数据。
                a=i;
                b=j;
                
            }

因为需要拿正因子数的和与本身作比较,所以我们需要一个代码块来实现他,但由于题目中要求我们体现函数的应用,故我们把这段单独拿出作为一个函数。

我们可以使用一个for循环来递归,用if来判断谁是他的正因子,并通过一个变量将这些数据保存下来,最终返回主函数进行判断。

以下为记录正因子数和的代码:

//记录正因字的和
int Sum(int n) 
{
	int m=0, sum=0;
	for (m=1;m<n;m++)
	{
		//判断n的正因子数,并将它们的和保存下来
		if (n%m==0) 
		{
			sum=sum+m;
		}
	}
	return sum;
}

以下为完整代码:

#include <stdio.h>

//记录正因字的和
int Sum(int n) 
{
	int m=0, sum=0;
	for (m=1;m<n;m++)
	{
		//判断n的正因子数,并将它们的和保存下来
		if (n%m==0) 
		{
			sum=sum+m;
		}
	}
	return sum;
}

int main()
{
	int i,j,a=0,b=0;

	printf("500以内的所有亲密数如下所示:\n");

	for (i=1;i<=500;i++)
	{
		for (j=1;j<=500;j++) 
		{
			//若两个数相同,则退出本层循环
			if (i==j)
				continue;

			//判断正因子数是否相同
			if (Sum(i)==j&&i==Sum(j)) 
			{
				
				//判断是否存在此前已经有相同答案的情况,若有,则跳出
				if (j==a&&i==b)
				{
					continue;
				}

				printf("%4d和%4d为亲密对数\n", i, j);
				
				//m,n记录符合条件的数据。
				a=i;
				b=j;
				
			}
		}
	}
}

执行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计高校体育馆管理信息系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

146.个性化推荐系统案例介绍

YouTube的推荐系统算法由两个神经网络组成&#xff1a; 一个用于候选生成一个用于排序 以用户的浏览历史为输入&#xff0c;候选生成网络可以显著减小可推荐的视频数量&#xff0c;从庞大的库中选出一组最相关的视频 这样生成的候选视频与用户的相关性最高&#xff0c;然后会对…

【ROS话题通信】发布者和订阅者

前言 本文记录ROS话题通信的学习过程&#xff0c;便于后续复习。首先明确&#xff0c;ROS中的话题通信&#xff0c;在ROS通信中非常重要&#xff0c;实现了分布式发布接收消息&#xff0c;也是实现了不同编程语言间的解耦&#xff0c;下面记录下自己学习过程中的相关代码和配置…

Kotlin小菜——基础语言教程

概述 Kotlin是JetBrains推出的一种编程语言&#xff0c;JetBrains是最智能的Java IDE的官方设计器&#xff0c;名为Intellij IDEA。这是在JVM上运行的强静态类型语言。2017年&#xff0c;谷歌宣布Kotlin是Android开发的官方语言。Kotlin是一种开源编程语言&#xff0c;它将面向…

会话Cookie跟踪技术

会话 用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 从浏览器发出请求到服务端响应数据给前端之后&#xff0c;一次会话(在浏览器和服务器之间)就被建立了 …

产品设计:Material Design 学习笔记二

​5、图标 桌面图标 桌面图标尺寸是48dp X 48dp。 桌面图标建议模仿现实中的折纸效果&#xff0c;通过扁平色彩表现空间和光影。注意避免以下问题&#xff1a; ①不要给彩色元素加投影 ②层叠不要超过两层 ③折角不要放在左上角 ④带投影的元素要完整展现&#xff0c;不能…

Debug怎么用

文章目录前言一、打断点运行Debug二、页面重新运行功能三、回到代码看断点前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 因为最近有个项目注册不好使&#xff0c;想看看哪的问题&#xff0c;所以用debug看看程序走到了哪 提示&#xff1a;以下是本篇文…

docker部署mysql初始化数据库

一、前言 在使用docker部署mysql服务时&#xff0c;往往需要在创建容器时新建database&#xff0c;在需要在创建实例的过程中希望初始化sql脚本。 mysql官方镜像支持在容器初次启动时自动执行指定的sql脚本或shell脚本&#xff08;注意&#xff1a;只有初次启动时才能自动执行&…

【正点原子I.MX6U-MINI】通过tftp从Ubuntu中下载zImage 和设备树文件 | 从网络启动Linux系统

从网络启动linux系统的唯一目的就是为了调试&#xff01;不管是为了调试linux系统还是linux下的驱动。每次修改linux系统文件或者linux下的某个驱动以后都要将其烧写到EMMC中去测试&#xff0c;这样太麻烦了。我们可以设置linux从网络启动&#xff0c;也就是将 linux 镜像文件和…

【OpenCV-Python】教程:5-3 光流

OpenCV Python Optical Flow (光流) 【目标】 了解光流的概念和用 Lucas-Kanade 算法估计光流我们将使用cv2.calcOpticalFlowPyrLK()这样的函数来跟踪视频中的特征点。们将使用cv2.calcOpticalFlowFarneback()方法创建一个密集的光流场&#xff0c;可以用于前景检测。 【理论…

[附源码]Python计算机毕业设计高校心理咨询管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Java+SSH实验室预约系统(含源码+论文+答辩PPT等)

该项目采用技术&#xff1a; 后台&#xff1a;SpringSpringmvcHibernate 前台JqueryMy97DatePickercssjs 使用了MySQLTomcat等相关技术 项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 本系统的用户可以分为三种&#xff1a;管理员、教师、学生。以下针对三种…

协同共进 | 中睿天下入会工业信息安全产业发展联盟

近日&#xff0c;中睿天下加入“工业信息安全产业发展联盟”&#xff0c;成为新一批会员单位。 工业信息安全是网络安全、国家安全的重要组成部分&#xff0c;涉及工业领域各个环节,涵盖工业控制系统安全、工业互联网安全、工业数据安全等各领域&#xff0c;直接关系到经济发展…

u盘出现fat32如何恢复文件?告诉你两种好方法

u盘由于体积小、内存大等优势&#xff0c;在日常生活领域应用的很多&#xff0c;但是使用过程中&#xff0c;总会遇到这样或那样的问题&#xff0c;比如u盘显示fat32打开啥都没有了&#xff1f;或者u盘出现fat32而无法访问的情况&#xff0c;这时如果里面有重要的数据怎么办呢&…

Activiti 工作流引擎

一、什么是工作流&#xff1f; 工作流:指业务过程的部分或整体在计算机应用环境下的自动化。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中&#xff0c;工作流属于计算机支持的协同工作&#xff08;CSCW&#xff09;的一部分&#xff0c;后者是普遍研究…

win7无损合并分区,win7合并磁盘分区

电脑的操作系统是win7的&#xff0c;如果磁盘分区太小或者说磁盘分区不合理&#xff0c;需要对磁盘分区重新分区&#xff0c;其中合并磁盘分区就是解决方法之一&#xff0c;那么&#xff0c;有没有关于win7无损合并分区的操作方法呢&#xff1f; 一、利用Windows自带的功能来合…

Matlab|基于BP神经网络进行电力系统短期负荷预测

目录 摘要 一、电力负荷数据导入 二、输入输出数据归一化 三、建立和训练BP神经网络 四、 使用测试数据进行负荷预测 五、Matlab代码实现 摘要 使用BP神经网络实现简单的电力负荷回归预测任务。主要的步骤为&#xff1a;导入数据、数据归一化、建立BP神经网络、训练BP神…

熹乐科技范维肖CC:基于开源 YoMo 框架构建“全球同服”的 Realtime Metaverse Application

前言 在「RTE2022 实时互联网大会」中&#xff0c;熹乐科技创始人 & CEO 范维肖CC 以《基于开源 YoMo 框架构建“全球同服”的 Realtime Metaverse Application》为题进行了主题演讲。 本文内容基于演讲内容进行整理&#xff0c;为方便阅读略有删改。 大家好&#xff0c;…

chatGPT的爆火,是计算机行业这次真的“饱和”了?

近日&#xff0c;chatGPT这一生成式AI爆火&#xff0c;这款号称神仙级别的自动语言生成式AI发布短短5天内&#xff0c;就吸引了100万用户&#xff0c;在官方描述中&#xff0c;chatGPT是一个“可以连续回答问题、承认自己的错误、挑战不正确的前提并拒绝不适当的要求”的对话模…

【GO】 K8s 管理系统项目[API部分--Deployment]

K8s 管理系统项目[API部分–Deployment] 1. 实现接口 service/dataselector.go package serviceimport ("sort""strings""time"appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1" )// dataselector 用于排序,过滤…