int m,a,b,c; for(m=100;m<=999;m++) { a=m/100; b=m/10%10; c=m%10 if(m=a*a*a+b*b*b+c*c*c) {System.out.printf("%d",m);} }
int i = Integer.MAX_VALUE; for(int j = 0;j<=i;j++){ int s = j; int sum = 0; while(s!=0){ sum = (s%10)*(s%10)*(s%10); s/=10; } if(sum == j) System.out.println(j); }
这是我平时记的一些常见算法、、希望对你有帮助、、、问题: 水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3 × 3 × 3 + 7 × 7 × 7 + 0 ×0×0=370,请输出所有的水仙花数。 该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。 实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断 3个数字的立方和是否等于自身。 则实现的代码如下所示: for(int i = 100;i < 1000;i++){ //循环所有三位数 int a = i % 10; //个位数字 int b = (i / 10) % 10; //十位数字 int c = i / 100; //百位数字 //判断立方和等于自身 if(a * a * a + b * b * b + c * c * c ==i) { System.out.println(i); } } 在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。 注意:因为 i是循环变量,这里不能改变 i的值,不然可能造成死循环。 完整程序: public class narcissus { public static void main(String[] args) { for(int i = 100;i < 1000;i++){ //循环所有三位数 int a = i % 10; //个位数字 int b = (i / 10) % 10; //十位数字 int c = i / 100; //百位数字 //判断立方和等于自身 if(a * a * a + b * b * b + c * c * c ==i) { System.out.println(i); } } }}
public class daffodil { public static void main(String[] args){ int i,a,b,c; System.out.println("1000内的水仙花数:"); for(i=100;i<1000;i++){ a=i/100; b=(i/10)%10; c=i%10; if(i==a*a*a+b*b*b+c*c*c){
int m,a,b,c;
for(m=100;m<=999;m++)
{
a=m/100;
b=m/10%10;
c=m%10
if(m=a*a*a+b*b*b+c*c*c)
{System.out.printf("%d",m);}
}
for(int j = 0;j<=i;j++){
int s = j;
int sum = 0;
while(s!=0){
sum = (s%10)*(s%10)*(s%10);
s/=10;
}
if(sum == j)
System.out.println(j);
}
另外,你学过其他的语言么?这不是纯java啊,这就是一个算法啊,用c或者c++都可以实现啊你是不是像弄清楚java编程的具体格式?
水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3 × 3 × 3 + 7 × 7 × 7 + 0 ×0×0=370,请输出所有的水仙花数。
该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。
实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断 3个数字的立方和是否等于自身。
则实现的代码如下所示:
for(int i = 100;i < 1000;i++){ //循环所有三位数
int a = i % 10; //个位数字
int b = (i / 10) % 10; //十位数字
int c = i / 100; //百位数字
//判断立方和等于自身
if(a * a * a + b * b * b + c * c * c ==i)
{
System.out.println(i);
}
}
在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。
注意:因为 i是循环变量,这里不能改变 i的值,不然可能造成死循环。
完整程序:
public class narcissus {
public static void main(String[] args) {
for(int i = 100;i < 1000;i++){ //循环所有三位数
int a = i % 10; //个位数字
int b = (i / 10) % 10; //十位数字
int c = i / 100; //百位数字
//判断立方和等于自身
if(a * a * a + b * b * b + c * c * c ==i)
{
System.out.println(i);
}
}
}}
{
j=i/100;
k=(i-j*100)/10;
l=i%10;
if((Math.pow(j,3)+Math.pow(k,3)+Math.pow(l,3))==i)
System.out.println(i+"是水仙花数");
i++;
}
public class daffodil {
public static void main(String[] args){
int i,a,b,c;
System.out.println("1000内的水仙花数:");
for(i=100;i<1000;i++){
a=i/100;
b=(i/10)%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c){
System.out.print(i+" ");
}
}
}
}
int a,b,c,d,num=0;
for(int i=101;i<1000;i++){
a=i/100;
b=i/10-a*10;
c=i%10;
d=a*a*a+b*b*b+c*c*c;
if(i==d){
num++;
System.out.println("水仙花数 "+num+" : "+i);
}
}
}