整数趣题(自守数)

/**************************************** 
*  File Name  : integer.c 
*  Creat Data : 2015.1.24
*  Author     : ZY 
*****************************************/ 

/*整数趣题*/
/*自守数*/
/*自守数是指一个数的平方的尾数等于该数自身的自然数。
例如25^2 = 625  76^2 = 5776  9376^2 = 87909376
请求出200000以内的自守数*/

#include <stdio.h>
int main()
{
	long mul,number,k,ll,kk;
	printf("It exists following automorphic numbers smaller than 200000:\n");
	for(number = 0;number < 200000;number++ )
	{
		for(mul = number ,k = 1;(mul /= 10) > 0;k *= 10 )
			//由number的位数确定截取数字进行乘法时的系数k
		{
			;
		}
		kk = k*10;//kk在截取部分积时的系数
		mul = 0;//积的最后N位
		ll = 10;//ll为截取乘数相应位时的系数
		while( k > 0 )
		{
			mul = (mul + (number%(k*10)) * (number%ll-number%(ll/10)))%kk;
			//(部分积+截取被乘数的后N位*截取乘数的第M位),%kk再截取部分积
			k /= 10;//k为截取被乘数时的系数
			ll *= 10;
		}
		if( number == mul )//判断若为自守数则输出
		{
			printf(" %5ld",number);
		}
	}
	printf("\n");
	return 0;
}

### 回答1: 自守数是指一个正整数的平方的末尾几位等于该数本身的数。例如,5的平方是25,25的末尾两位是25,所以5是一个自守数。 要判断一个正整数是否为自守数,可以使用如下步骤: 1. 将该数的平方计算出来。 2. 取出该数的末尾几位(和要判断的数的位数相同)。 3. 将取出的末尾几位与要判断的数进行比较,如果相等则该数是自守数,否则不是。 例如,如果要判断数字5是否为自守数,可以使用如下代码: ``` int num = 5; int square = num * num; // 计算平方 int lastTwo = square % 100; // 取出末尾两位 if (lastTwo == num) { System.out.println(num + "是自守数"); } else { System.out.println(num + "不是自守数"); } ``` 在上面的代码中,我们先计算出5的平方是25,然后取出末尾两位25,最后将取出的末尾两位和5进行比较。因为25等于5,所以输出“5是自守数”。 ### 回答2: 自守数是指一个整数,如果它的平方数中包含了它本身,则称其为自守数。 以Java语言实现判断一个正整数是否为自守数的方法,可以按照以下步骤进行: 1. 定义一个isAutomorphicNumber方法,该方法接受一个正整数作为参数,返回一个boolean值表示是否是自守数。 2. 在isAutomorphicNumber方法中,首先将传入的整数转换为字符串类型,以便进行后续比较。 3. 计算传入整数的平方,并将结果转换为字符串类型。 4. 比较平方数字符串和原整数字符串的后几位是否相等,可以通过使用String类的endsWith方法实现。 5. 如果平方数字符串的后几位与原整数字符串相等,则返回true,表示是自守数;否则返回false,表示不是自守数。 以下是使用Java代码实现的示例: ```java public class AutomorphicNumber { public static boolean isAutomorphicNumber(int number) { String numberStr = String.valueOf(number); String squareStr = String.valueOf(number * number); return squareStr.endsWith(numberStr); } public static void main(String[] args) { int num1 = 25; int num2 = 76; if (isAutomorphicNumber(num1)) { System.out.println(num1 + " 是自守数"); } else { System.out.println(num1 + " 不是自守数"); } if (isAutomorphicNumber(num2)) { System.out.println(num2 + " 是自守数"); } else { System.out.println(num2 + " 不是自守数"); } } } ``` 通过isAutomorphicNumber方法的测试,可以判断给定的正整数是否是自守数,并将结果打印输出。输出结果将根据判断的情况显示不同的信息。 ### 回答3: 自守数是指一个正整数,它的平方数的末尾数和它本身的末尾数相等。我们可以使用Java编写一个程序来判断一个正整数是否为自守数。 首先,我们需要定义一个函数来判断一个正整数是否为自守数。该函数将接受一个参数num,表示要判断的正整数。我们将num的平方作为一个字符串,然后比较字符串的最后一个字符和num的最后一个字符是否相等。如果相等,则返回true,表示该正整数自守数;如果不相等,则返回false,表示该正整数不是自守数。 下面是具体的实现代码: ```java public class Main { public static boolean isAutomorphicNumber(int num) { String square = String.valueOf(num * num); char lastDigitOfNum = String.valueOf(num).charAt(String.valueOf(num).length() - 1); char lastDigitOfSquare = square.charAt(square.length() - 1); return lastDigitOfNum == lastDigitOfSquare; } public static void main(String[] args) { int num = 25; // 要判断的正整数 if (isAutomorphicNumber(num)) { System.out.println(num + "是自守数"); } else { System.out.println(num + "不是自守数"); } } } ``` 在上面的代码中,我们定义了一个isAutomorphicNumber函数来判断一个正整数是否为自守数。然后在main函数中调用该函数来判断一个给定的正整数是否为自守数。使用25作为示例,运行代码输出结果为"25是自守数"。 除了25之外,还有一些其他的自守数,如0、1、5、6等。我们可以通过修改num的值来判断其他正整数是否为自守数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值