1. 程式人生 > >迴文水仙花自守數介紹201809

迴文水仙花自守數介紹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;
}