Java获取三位的水仙花数及统计个数
水仙花数的定义
在数论中,水仙花数(Narcissistic number)[1][2],也被称为超完全数字不变数(pluperfect digital invariant, PPDI)[3]、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number)[4] ,用来描述一个N位非负整数,其各位数字的N次方和等于该数本身。
程序实现
1、For循环实现
package com.itheima_04;
//统计水仙花的个数
public class ForTest5 {
public static void main(String[] args) {
//定义统计水仙花个数的变量
int geshu = 0;
//获取数据的个位,十位,百位
for(int i=100;i<=999;i++) {
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判断是否位水仙花数
if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai) {
geshu += 1;
}
}
//输出水鲜花的个数
System.out.println("水仙花数:"+geshu);
}
}
2、while循环实现
package com.itheima_05;
//统计水仙花数的个数
public class WhileTest2 {
public static void main(String[] args) {
//定义初始化变量
int i = 100;
//定义计数变量
int geshu = 0;
//while循环
while(i<=999) {
//获取个十百位
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判断是否为水仙花数
if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
System.out.println(i);
geshu++;
}
i++;
}
System.out.println("水仙花数:"+geshu);
}
}
3、do···while循环实现
public class DoWhileTest2 {
public static void main(String[] args) {
int i = 100;
int geshu = 0;
do {
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
if((ge*ge*ge+shi*shi*shi+bai*bai*bai)==i) {
System.out.println(i);
geshu++;
}
i++;
}while(i<999);
System.out.println("水仙花数:"+geshu);
}
程序结果
153
370
371
407
水仙花数4
三种循环的区别
-
区别1:do···while循环至少执行一次循环而for和while循环必须判断条件成立才可以执行循环体
-
区别2:for循环结束后,初始化的变量就不能被使用了,而while循环结束后,初始化的变量还可以继续使用
-
推荐使用顺序
for–>while–>do···while