3-6位数的自幂数(源码)

1 篇文章 0 订阅
1 篇文章 0 订阅

源码:

import time

def zimi(num):
    length=len(str(num))
    n=num
    s=0
    while n !=0:
        a=n%10
        s=s+a**length
        n=n//10
    if s==num or num==0:
        return True
    else:
        return False
time=time.time
t1=time()
sxh=[]
for i in range(100,999):
    if zimi(i):
        sxh.append(i)
t2=time()
symg=[]
for i in range(1000,9999):
    if zimi(i):
        symg.append(i)
t3=time()
wjx=[]
for i in range(10000,99999):
    if zimi(i):
        wjx.append(i)
t4=time()
lh=[]
for i in range(100000,999999):
    if zimi(i):
        lh.append(i)
t5=time()
format='水仙花数:{} 耗时:{}\n四叶玫瑰数:{} 耗时:{}\n五角星数:{} 耗时:{}\n六合数:{} 耗时:{}'.format
print(format(sxh,t2-t1,symg,t3-t2,wjx,t4-t3,lh,t5-t4))

自幂数是指一个n位数,其各位数字的n次幂之和等于该数本身。例如,最常见的自幂数是2位数的完全平方数,如1的平方是1,2的平方是4,3的平方是9等等。而对于多于两位数自幂数,比较著名的是3位数的水仙花数,比如153是一个3位数,且1^3 + 5^3 + 3^3 = 153。 在Java程序中,生成20位数以内的自幂数,可以通过以下步骤来实现: 1. 确定自幂数位数范围,由于题目要求是20位数以内,我们需要遍历1位数到19位数的所有情况。 2. 对于每一个确定的位数n,我们需要计算出所有可能的数字,并且计算出这些数字的各位数的n次幂之和。 3. 判断这个和是否等于原始的数字,如果是,则该数字就是自幂数。 示例代码如下: ```java public class AutoPowerNumber { public static void main(String[] args) { for (int n = 1; n <= 19; n++) { // 位数从1到19 for (long i = (long) Math.pow(10, n - 1); i < Math.pow(10, n); i++) { // 生成n位数的数字 if (isAutoPowerNumber(i, n)) { System.out.println(i + " 是一个" + n + "位的自幂数。"); } } } } public static boolean isAutoPowerNumber(long number, int n) { long sum = 0; long temp = number; while (temp > 0) { int digit = (int) (temp % 10); sum += Math.pow(digit, n); temp /= 10; } return sum == number; } } ``` 这段代码首先定义了一个主方法main,它会遍历1到19位数的所有情况,然后通过isAutoPowerNumber方法来判断一个数是否是自幂数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值