所以要判断一个三位数是不是水仙花数,得先取得这个三位数的的个位,十位和百位。
1:先取得他的百位:int BaiWei = x/100因为int是整形,所以不会进行四舍五入,也不会管小数点后面的数。
再取得十位:int ShiWei = (x-BaiWei*100)/10先用这个数减去百位数*100,再除以10,原因同上。
最后取得个位数:int GeWei = x-BaiWei*100-ShiWei*10.很明显,就能得到个位数。
2:
intb = x/100
int s = x/100%10
int g = x%10
求立方的方法:
1,x = Baiwei*Baiwei*Baiwei+ShiWei*ShiWei*ShiWei+GeWei*GeWei*GeWei
2,Java提供求n次方的方法:java.lang.Math.pow(a, b)其表示为a的b次方。
最后程序:
第一种:
public class ShuiXianHuaShu {
public static void main(String[] args) {
int x = 0 //定义水仙花数的个数
for(int i=100i<=999i++){
int b = i/100 //取得百位数
int s = (i-100*b)/10 //取得十位数
int g = (i-s*10-b*100) //取得个位数
if(i==g*g*g+s*s*s+b*b*b){
x++ //每次符合水仙花数条件,则x+1
System.out.print(i+" ") //输出符合条件的数
}
}System.out.println() //换行
System.out.println("水仙花数总共有"+x+"个") //输出水仙花数的总数
}
}
第二种:
public class ShuiXianHuaShu {
public static void main(String[] args) {
int x = 0 //定义水仙花数的个数
for(int i=100i<=999i++){
int b = i/100 //取得百位数
int s = i%100/10 //取得十位数
int g = i%10 //取得个位数
if(i==Math.pow(b, 3) + Math.pow(s, 3) + Math.pow(g, 3)){
x++ //每次符合水仙花数条件,则x+1
System.out.print(i+" ") //输出符合条件的数
}
}System.out.println() //换行
System.out.println("水仙花数总共有"+x+"个") //输出水仙花数的总数
}
}
100以内是没有水仙花数的!水仙花数定义:水仙花数是指一个
n
位数
(
n≥3
),它的每个位上的数字的
n
次幂之和等于它本身。(例如:1^3
+
5^3
+
3^3
=
153)
//100-999之间的数
public
class
Demo
{
public
static
void
main(String
[]
a){
for
(int
i=101i<999i++){
String
s=new
Integer(i).toString()
int
temp=0
int
n=s.length()
for
(int
j=0j<nj++){
temp+=Math.pow(Character.digit(s.charAt(j),
10),
n)
}
if(temp==i){
System.out.println(i)
}
}
}
}
//不太清楚你所说的100间的斐波那契数是什么概念
是100以内的斐波那契数
还是100步以内的斐波那契数,下面给你写的程序里面n是步数
public
class
Demo
{
public
static
void
main(String[]
args)
{
int
n
=
20
fib(n)
}
public
static
void
fib(int
n)
{
long
f1
=
1,
f2
=
1,
fn
=
0
if
(n
==
1)
System.out.print(f1)
if
(n
==
2)
System.out.print(f2)
else
{
System.out.print(f1+"
")
System.out.print(f2+"
")
for
(int
i
=
2
i
<
n
i++)
{
fn
=
f1
+
f2
f1
=
f2
f2
=
fn
System.out.print(fn+"
")
}
}
}
}
统计水仙花数的个数的话可以使用一个变量来计数,循环判断如果这个数是水仙花数的话,就把这个数加1。
具体示例代码如下:
publicclassDemo1{publicstaticvoidmain(String[]args){
System.out.println(\\\"100~999之间的水仙花数是:\\\")
intcount=0
for(intcustNo=100custNo&lt=999custNo++){
intgeWei=custNo%10
intshiWei=custNo/10%10
intbaiWei=custNo/100%10
if(custNo==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei){
count++
System.out.println(custNo)
}
}
System.out.println(\\\"个数:\\\"+count)
}
}
接下来介绍下什么是水仙花数:
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。