Java 编程找出所有的水仙花数(水仙花数)。
代码如下:
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)。
参考资料:水仙花数百度百科
本身。例如: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);
}
}
}
参考资料: http://blog.sina.com.cn/s/blog_4889a88e010008bv.html
public List<Integer> getNarcissisticNumbers(int n) {
List<Integer> 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;i<max;i++){
Integer 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);
}
}
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<num.length();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+"是水仙花数");
}
}
}
}
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;
}