(篇六)C语言求自首数、完数、亲密数


本篇主要介绍C语言中求自首数、完数和自然常数e的求解算法

一、求自首数

1、自首数:
自守数是指一个数的平方的尾数等于该数自身的自然数。

自首数是按位数来分的:三位自守数是625和376,四位自守数是0625和9376,五位自守数是90625和09376…

比如:

5和6是一位自守数(5x5=25 6x6=36)
25x25=625 76x76=5776,所以25和76是两位自守数。

2、题:
用C语言算法求解100000内的所有自首数

3、参考代码:

#include <stdio.h>

main()
{
	int i, m, temp;
	printf("100000内的自首数有以下:");
	for(i=1; i<=100000; i++)
	{
		temp = i*(i-1);
		m = 1;
		//得到某个数的尾数 
		while(m<=i)
			m *= 10;
		if(temp%m == 0)
			printf("%d  ",i);
	}
	printf("\n");
}

4、参考结果:
自首数

二、求完数

1、完数(完全数)

From“科普中国”
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。

2、参考代码:

#include <stdio.h>
#include <math.h> 

int main()
{
	int i, j, sum;
	for(i=2; i<1000; i++) 
	{
		sum = 0;
		for(j=1; j<=i/2; j++)
		{
			if((i%j) == 0)
			{
				sum += j;
			}
			if(sum==i)
			{
				printf("%d是完数,它的因子有:",i);
				for(j=1; j<=i/2; j++)
				{
					if((i%j)==0)
					{
						printf("%d ",j);
					}
				}
				printf("\n");
			}
		}
	}
}

3、参考结果:
完数

三、求亲密数

1、亲密数:
如果a的所有正因子和等于b,b的所有正因子和等于a, 因子包括1但不包括本身, 且a不等于b,则称a,b为亲密数对。一般通过叠代编程求出相应的亲密数对。

2、题:
用C语言编程求出5000内的亲密数对

3、分析:
(1)通过从1循环到5000,对每一个数进行判断,看其是否有亲密数,如果有则输出这个亲密数;
(2)判断是否有亲密使数的方法:先求出某数i的因子之和sum,再求出sum的因子之和;
(3)如果i的因子之和等于sum的因子之和,且i不等于sum,则sum就是i的亲密数

4、参考代码:

#include <stdio.h>

int main()
{
	int i, j, sum1, sum2, n;  //sum1是i的亲密数,sum2是sum1的亲密数 	
	printf("您需要计算多少内的亲密数:");
	scanf("%d",&n);
	printf("%d内的亲密数有:",n);
	
	//核心算法 
	for(i=1;i<=n;i++)
	{
		sum1 = 0;  //每循环一轮都将求和变量置为0 
		sum2 = 0;
		
		//求i的因子之和sum1 
		for(j=1;j<i;j++)
		{
			if(i%j==0)  //取余等于0则为一个因子 
			{
				sum1 += j;
			}
		}
		
		//求sum1的因子之和sum2
		for(j=1;j<sum1;j++)
		{
			if(sum1%j==0)
			{
				sum2 += j;
			}
		} 
		
		//判断i的因子和是否等于sum1的因子和
		if((sum2==i) && (i!=sum1) && (i<sum1)) 
		//表示i的因子和等于sum1,而sum1的因子和等于i,则为亲密后 
		//后两个判断是为了增强程序的容错性,表示这对亲密数不能是相等的数,且前者小于后者 
		{
			printf("\t%d与%d",i,sum1);  //输出这对亲密数 
		} 
	}
}

5、参考结果:
亲密数1
亲密数2

猜你喜欢

转载自blog.csdn.net/Viewinfinitely/article/details/105253623
今日推荐