JAVA-水仙花数

水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数。

输入格式:

输入一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

153
370
371
407


答案

import java.util.Scanner;

public class Main {
    public static int POW(int num,int digits){
        int res = 1;
        for (int i = 1; i <= digits; i++) {
            res *= num;
        }
        return res;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int digits = scanner.nextInt();
        for (int i = POW(10,digits - 1); i < POW(10,digits); i++) {
            int sum = 0,num = i;
            for (int j = 0; j < digits; j++) {
                sum += POW(num%10,digits);
                num /= 10;
            }
            if(sum == i)
            {
                System.out.println(i);
            }
        }
    }
}
### Java水仙花算法实现 水仙花是指一个三位,其各位字的立方和等于该本身。例如,153 是一个水仙花,因为 \(1^3 + 5^3 + 3^3 = 153\)。 以下是使用Java实现水仙花算法的代码示例: ```java public class NarcissisticNumber { public static void main(String[] args) { int count = 0; // 计器,用于统计找到的水仙花 for (int i = 100; i <= 999; i++) { // 遍历所有三位 int hundreds = i / 100; // 取出百位字 int tens = (i / 10) % 10; // 取出十位字 int units = i % 10; // 取出个位字 if (i == Math.pow(hundreds, 3) + Math.pow(tens, 3) + Math.pow(units, 3)) { // 判断是否为水仙花 count++; // 如果是水仙花,计器加1 System.out.println(i + " 是水仙花"); // 输出水仙花 } } System.out.println("水仙花一共有 " + count + " 个"); // 输出水仙花的总 } } ``` #### 算法解释 上述代码通过遍历所有的三位(从100到999),逐一检查每个是否满足水仙花的条件。具体步骤如下: - 使用 `for` 循环遍历所有三位- 通过整除法和取模运算分别提取百位、十位和个位字[^1]。 - 利用 `Math.pow` 函计算每位字的立方值,并将结果相加[^3]。 - 检查字的立方和是否等于原字。如果相等,则输出该字并计入统计[^4]。 #### 示例输出 运行上述代码后,程序将输出所有三位中的水仙花及其总。例如: ``` 153 是水仙花 370 是水仙花 371 是水仙花 407 是水仙花 水仙花一共有 4 个 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值