Java 编程找出所有的水仙花数(水仙花数)。

2024-11-18 06:27:28
推荐回答(5个)
回答(1):

代码如下:

package com.vo;

public class Shuixianhua {

public static void main(String[] args) {

int a=0;
int b=0;
int c=0;
for(int i=100;i<999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i==(a*a*a+b*b*b+c*c*c))
System.out.println(i);
}

}

}

首先水仙花数”是指一个三位数,其各位数字立方和等于该数,

如:153是一个“水仙花数”,因为1的三次方+5的三次方+3的三次方等于153

解此题的关键是怎能样从一个三位数中分离百位数、十位数、个位数。可以这样做,设该三位数以i代表,由a,b,c三个数字组成。
(1)百位数字a:a=int(i/100).
(2)十位数字b:b=int((i-100*a)/10)
(3)个位数字c:c=i-int(i/10)*10.

然后在根据上述代码可得

扩展资料:

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

参考资料:水仙花数百度百科

回答(2):

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

给你举例说明

求出100至999之间的所有“水仙花数”
找出100--999之间的所有“水仙花数”。所谓“水仙花数”是指一个三个数,其各位数字的立方和等于身。

解此题的关键是怎能样从一个三位数中分离百位数、十位数、个位数。可以这样做,设该三位数以i代表,由a,b,c三个数字组成。
(1)百位数字a:a=int(i/100).
(2)十位数字b:b=int((i-100*a)/10)
(3)个位数字c:c=i-int(i/10)*10.

代码如下:

package com.vo;

public class Shuixianhua {

public static void main(String[] args) {

int a=0;
int b=0;
int c=0;
for(int i=100;i<999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i==(a*a*a+b*b*b+c*c*c))
System.out.println(i);
}

}

}

回答(3):

public class NarcissisticNumber {
public List getNarcissisticNumbers(int n) {
List numbers = new ArrayList<>();
if(n==1){
for(int m = 0;m<10;m++){
numbers.add(m);
}
}else{
Integer min = this.getPower(10,n-1);
Integer max = this.getPower(10,n);
for(Integer i = min;iInteger sum = 0;
for(int j = 1;j<=n;j++){
Integer m = i%getPower(10,j)/getPower(10,j-1);
Integer s = getPower(m,n);
sum+=s;
}
if(sum.equals(i)){
numbers.add(i);
}
}
}
return numbers;
}
private Integer getPower(int x, int y){
if(y == 0) return 1;
if(y == 1) return x;
return x*getPower(x, y-1);
}
}

回答(4):

public class TestNumber {
public static void main(String[] args) {
int ls_num=0;
for(int i=100;i<=999;i++){
ls_num=0;
String num = i+"";
for(int j =0;j ls_num=ls_num+Integer.parseInt(num.charAt(j)+"")*Integer.parseInt(num.charAt(j)+"")*Integer.parseInt(num.charAt(j)+"");
}
if(ls_num==i){
System.out.println(i+"是水仙花数");
}
}

}

}

回答(5):

#include
int main()
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if((a*100+b*10+c)==(a*a*a+b*b*b+c*c*c))
printf("%d ",a*100+b*10+c);
return 0;
}