黑马程序员技术交流社区
标题:
关于水仙花数
[打印本页]
作者:
崔小旭
时间:
2014-9-24 12:16
标题:
关于水仙花数
各个位上的数字的立方和等于其数值本身
153
1^3=1 5^3 = 125 3^3=27
水仙花数及统计其个数
作者:
java_dream
时间:
2014-9-24 13:37
如下代码:
package test;
import java.util.ArrayList;
import java.util.List;
/**
*
各个位上的数字的立方和等于其数值本身
153
1^3=1 5^3 = 125 3^3=27
水仙花数及统计其个数
* @author java-dream
*
*/
public class Test2 {
//该题对数值的范围没有限制,设以3位数范围内吧
public static void main(String[] args){
//初始数值
Integer number = 100;
//用于存放符合条件的数值
List<Integer> numBarrel = new ArrayList<Integer>();
//如果数值是3位数,则进行判断是否符合条件;否则终止循环
while(number<1000){
int n = 1;
int index = 0;
//用于存放number数值各个位的数
int[] barrel = new int[3];
while(number/n>=1){
//获取number数值各个位的数,并保存到barrel数组
barrel[index++] = (number/n)%10;
n *= 10;
}
//求得各个位的数的立方,并相加
int sum = 0;
for(int i=0; i<barrel.length; i++){
sum += barrel[i]*barrel[i]*barrel[i];
}
//各个位上的数字的立方和等于其数值本身,将该number保存
if(sum==number){
numBarrel.add(number);
}
number++;
}
System.out.println("水仙花数为:"+numBarrel);
System.out.println("总共有:"+numBarrel.size()+"个");
}
}
复制代码
运行结果:
水仙花数为:[153, 370, 371, 407]
总共有:4个
复制代码
作者:
姠佐メ亾佑つ
时间:
2014-9-27 17:52
思路:其实就把它当着做数学运算题 一样! 比如计算3位数的.
public class ShuiXianHuaShuTest {
public static void main(String[] args) {
for (int i = 0; i <= 10000000; i++) {
int geWei, shiWei, baiWei;
baiWei = i / 100;
shiWei = (i - baiWei * 100) / 10;
geWei = i - baiWei * 100 - shiWei * 10;
if (i == geWei * geWei * geWei + shiWei * shiWei * shiWei + baiWei
* baiWei * baiWei) {
System.out.println(i);
}
}
}
}
复制代码
作者:
姠佐メ亾佑つ
时间:
2014-9-27 17:58
package com.itheimaday19;
/**
思路:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
*/
public class ShuiXianHuaShuTest {
public static void main(String[] args) {
int count=1;
for (int i = 100; i < 1000; i++) {
int geWei, shiWei, baiWei;
baiWei = i / 100;
shiWei = (i - baiWei * 100) / 10;
geWei = i - baiWei * 100 - shiWei * 10;
if (i == geWei * geWei * geWei + shiWei * shiWei * shiWei + baiWei
* baiWei * baiWei) {
System.out.println(i+"\t"+(count++)+"个");
}
}
}
}
复制代码
作者:
潘杰
时间:
2014-10-3 11:10
其实把每位上的数取出来,这个题差不多就解决了
作者:
七年锦·旅行
时间:
2014-10-6 22:31
水仙花
作者:
七年锦·旅行
时间:
2014-10-6 22:37
/*
思路:
1.水仙花数是指一个三位数:100——999,遍历
2.取出三位数的每一位;
比如:324
个位:324 % 10 = 4
十位:324 / 10 % 10 = 2
百位:324 / 100 % 10 = 3
千位:数字 / 1000 % 10 = 千位
万位:数字 / 10000 % 10 = 万位
3.将每一位的立方相加,和当前数字判断:
if((个位 * 个位 * 个位 + 十位 * 十位 * 十位 + 百位 * 百位 * 百位) == num){
System.out.println("水仙花数:" + num);
}
*/
class ShuiXianHuaDemo{
public static void main(String[] args){
int count = 0;
for(int sxNum = 100; sxNum <= 999; sxNum++){
int g = sxNum %10;
int s = sxNum/10%10;
int b = sxNum/100%10;
if((g*g*g+s*s*s+b*b*b) == sxNum){
System.out.println(sxNum);
count++;
}
}
System.out.println("水仙花数有:"+count+"个");
}
}
/*
结果是:
153
370
371
407
水仙花数有:4个
*/
复制代码
作者:
迷失的小Z
时间:
2014-10-9 18:19
感觉理解成数学运算应该比较好弄……
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2