重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public class Daffodil {
10年积累的网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有子长免费网站建设让你可以放心的选择与我们合作。
/**
*
* @param
* @return void
* @param args
* desc
*/
public static void main(String[] args) {
for (int n = 100; n 999; n++) {
int a = n / 100;
int b = (n % 100) / 10;
int c = n % 10;
if(Math.pow(a, 3)+Math.pow(b,3)+Math.pow(c,3)==n){
System.out.println(n);
}
}
}
}
今天偶然发现这个,分享给大伙。在Java里也实现,希望对初学者有所帮助。 以下是代码内容: package shuixianhuashu; /** *运算规则: *水仙花数是三位数,它的个、十、百位数字的立方的和等于该数本身, *例如:371=27+343+1 *求出所有水仙花数(分别用for,while循环实现) * @author S10 * */ public class ShuiXianHuaShu { public static void main(String[] args) { int count = 0; for(int i = 100; i 1000; i ++){ if(getCount(i)){ System.out.println(i + "是水仙花数....."); count++; } } //上下两个循环的效果是一样的 int i = 100; while(i 999){ i++; if(getCount(i)){ System.out.println(i + "是水仙花数===="); count++; } } System.out.println("共有" + count + "个水仙花数!"); } //得到一个数的立方的值 public static int getLifang(int i){ return i * i * i ; } public static boolean getCount(int i){ int a = i / 100; //取出百位的的数字 int temp = i % 100; int b = temp / 10; //取出十位的数字 int c = temp % 10; //取出各位的数字 if(getLifang(a) + getLifang(b) + getLifang(c) == i){ return true; }else{ return false; } } } (责任编辑:董建伟)
按一下代码执行:
public class woo {
public static void main(String args[]) {
System.out.println("100-1000中的水仙花数有:");
for(int i=100;i1000;i++){
int single = i%10;
int ten = i/10%10;
int hundred = i/10/10%10;
//水仙花数判断要求
if(i == (single*single*single+ten*ten*ten+hundred*hundred*hundred)){
System.out.println(i);
}
}
}
}
扩展资料:
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
参考资料:
水仙花数——百度百科
水仙花数是指一个
n
位数
(
n≥3
),它的每个位上的数字的
n
次幂之和等于它本身。
从上面的定义可以看出,只要将给出的数字各个位数的数字分解出来,然后把个数字的3次方相加与原数相比是否相等即可判断出是否为水仙花数,给你一段源码,是求100~1000内的水仙花数,有注释,希望对你有帮助:
public
class
Wflower
{
public
static
void
main(String[]
args)
{
int
a=0,b=0,c=0;
System.out.println("水仙花数是:");
for
(int
i
=
100;
i
1000;
i++)
//遍历所有3位数
{
a
=
i/100;
//获取3位数中百位的数
b=i%100/10;
//获取3位数中十位的数
c=i%100%10;
//获取3位数中个位的数
a
=
a
*
a
*
a;
//计算第一位数的立方
b
=
b
*
b
*
b;
//计算第二位数的立方
c
=
c
*
c
*
c;
//计算第3位数的立方
if
((a
+
b
+
c)
==
i)
//如果符合水仙花数
System.out.print("
"+i);
}
}
}
你的程序主要是每个数前,sum变量没有置0
改正后的水仙花数的Java程序如下(改动的地方见注释)
public class a99{
public static void main(String[] arge){
int sum=0,t=0;
for(int i=100;i1000;i++){
t=i;
sum=0;//这里加一句,每个数字都要初始化sum=0
while(t!=0){
sum += ((t%10)*(t%10)*(t%10));
t /= 10;
}
if(sum==i)
System.out.println(i+"是水仙花数");//这里printf改成println
}
}//这里加大括号
}//这里加大括号
public class ShuiXianShu
{
/**
* 题目:打印出100-999之间所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
* 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。*
*/
public static void main(String[] args)
{
for(int i=100;i=999;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);
}
}
}
}
这个是我以前做过的,楼主可以参考