Java for循环求100-1000的水仙花数的个数
水仙花数(Narcissistic number)是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
根据题意可知:
for循环取值范围 100<=i<1000
我们需要取出这个三位数的百位数,十位数,个位数
/*定义一个三位数为i,
定义a为百位上的数
b为十位上的数
c为个位上的数*/
int a = i%10;
//通过i模与10等到百位上的数
int b = i/10%10;
//通过除以10得到十位和个位组成的两位数,再模与10得到十位上的数
int c = i/10/10%10;
“/”是取整计算;“%”是取余计算(取模)
由水仙花的定义可知
a的3次方+b的3次方+c的三次方 等于i
Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i
或
a*a*a+b*b*b+c*c*c==i
总代码:
public class Narcissus {
public static void main(String[] args) {
int count=0;
for (int i=100;i<1000;i++) {
int a = i%10; //通过i模与10等到百位上的数
int b = i/10%10;//通过除以10得到十位和个位组成的两位数,再模与10得到十位上的数
int c = i/10/10%10;
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i)
//调用math中计算次方的方法
{
System.out.println(i);
count++;
//当if中的条件成立时,输出i的值,并使count+1
}
}
System.out.println("水仙花数为"+count);
}
}