[C语言]亲密数输出

首先问,亲密数是什么

简言之,某个数的公因数之和的公因数之和就是它本身(好像有一点拗口)。

那么接下来就是根据这一点来判断就ok了。

#include<stdio.h>
#include<math.h>
int main()
{
	int a=2;
	for (; a<=3000; a++)//从1循环到3000
	{
		int sum = 0,i=1,b=1,c=0;//定义每一轮初各个变量不变
		for (; i < a; i++)//找a的公因数i					//这里可以改成i<a/2
		{
			
			if (a % i == 0)//判断每个i是否为a的公因数               //	得到了a的公因数之和sum
			{
				sum += i;//是的话,每个i加起来得到sum            //
			}	
			else
			{
				continue;
			}
		}														//
		
		//再求sum的公因数之和

		for (; b < sum; b++)//找sum的公因数b				        	//这里可以改成b<sum/2
		{
			
			if (sum % b == 0)//判断每个数是否为sum的公因数               //	得到了sum的公因数之和c
			{
				c += b;//是的话,每个b加起来得到c                   //
			}
			else
			{
				continue;
			}
		}

		
		//现在要判断该sum(a的公因数之和)是否与a构成亲密数

		if (a==c && a<sum)//如果是,则说明a与c是亲密数
		{
			printf("%d的亲密数是%d\n", a, sum);
		}
		else
		{
			continue;//继续判断下一个a
		}

	}
	return 0;
}

初版代码,后面看了下csdn大家的代码发现可以注意一个地方。

那就是任一数的公因数必小于等于它本身。

所以可以改成i<a/2和b<sum/2

不足

1.学的太少,应该还有更好的方法。

2.变量名字取得太随意了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值