自守数

import java.util.Scanner;


public class GetSelfConttrolledNum {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int count = getSelfControlledNum(num);
		System.out.println(count);
	}

	private static int getSelfControlledNum(int num) {
		int number = 0;
		for (int i = 2; i < num; i++) {
			
			
				if(i<9){
					int a = i*i;
					if(a%10==i)
						number++;
				}
			else if(i<99){
				int a = i*i;
				int b = a-a/100*100;
				if(b==i)
					number++;
			}else if(i<999){
				int a = i*i;
				int b = a-a/1000*1000;
				if(b==i)
					number++;
			}else if(i<9999){
				int a = i*i;
				int b = a-a/10000*10000;
				if(b==i)
					number++;
			}
			
				
				
		}
		return number+2;
	}

}
自守数:

如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数(如果该数是一位数,该数平方的个位和该数相同就是自守数,比如0,1,5;如果该数是两位数,就要看结果的后两位是否与该数相同)。

定义:自然数n称为p-进制下的自守数当且仅当 n(n-1)能被p^m整除其中m=1+[log_p n]。取p=10时即为此自守数的定义。

0和1的平方的个位数仍然是0和1(对任何p进制),称为平凡自守数。

注意:当p为素数时,只有平凡自守数。

显然,5和6是一位自守数(5x5=25 6x6=36)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值