回文水仙花自守数介绍201809

对于数本身,有很多有趣的性质,本篇只介绍三种有趣的数字,都是和数位拆分有关;

1、回文数:从左到右、从右到左读,都是一样的数;

2、水仙花数:在三位数中,有一些数字满足条件:各数位的数的平方和等于这个数字本身;

3、自守数:一个数平方后,尾数等于自己;

1、回文数的判断:

1.1 将一个数字按数位拆分,并且放到一个数组中;

1.2 让这个数组进行首尾比较;

上代码:

//回文数的判断 
//不定数位的拆分+首尾判断 
#include<cstdio>
int a[20];
bool pd(int x)//判断这个数字是否是回文,是的话返回1,否返回0; 
{
	int n=0;
	while(x>0)//对x进行数位拆分 
	{
		a[++n]=x%10;//每次将个位放进a数组中 
		x/=10;
	}
	//a数组的长度是n
	 
	for(int i=1;i<=n/2;i++)//枚举前半段,分别和后半段对称的位置进行比较 
	{
		if(a[i]!=a[n-i+1])//有一个不符合要求,就是错的 
		{
			return 0;
		}
	}
	return 1;//以上判断过程能完成,所以是对的 
}

int main()
{
	int x;
	scanf("%d",&x);
	if(pd(x)>0) 
	{
		printf("Y");
	}
	else 
	{
		printf("0");
	}
	return 0;
}

2、水仙花数的判断与输出

//输出全部的水仙花数
//
#include<cstdio>

int main()
{
	int s,n,a,b,c;
	for(int i=100;i<=999;i++)//枚举三位数 
	{
		a=i%10;//取个位 
		b=i/10%10;//取十位 
		c=i/100;//取百位 
		
		if(  a*a*a+b*b*b+c*c*c  ==   i  )
		{
			printf("%d^3+%d^3+%d^3 = %d \n",a,b,c,i);
		}
		
	}
	return 0;
}

3、自守数的判断

3.1 用x来求出自己的长度

//输出从1-10000的自守数
//数位长度的理解 
#include<cstdio>
 
int main()
{
	int s,x;
	for(int i=1;i<=10000;i++)
	{
		s=i*i;
		x=1;  //求出对应的数位长度 
		while(x<i)//如果x比自己小,x*10 
		{
			x=x*10;
		}
		//最终:原数是几位,x就是1*几个0;
		//例如:原数是62,x就是100;原数是5628,x就是10000; 
		if(s%x==i)
		{
			printf("%d ^2 = %d \n",i,s);
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/liusu201601/article/details/82628706