通过练习水仙花数和完全数,掌握相应的知识点
- for语句的相关表达式
- while语句格式
- if语句的语法
package arithmetic;
/**
* 讲解的相关算法有
* 1、水仙花数
* 2、完全数
*
* @author sunRainAmazing
*
*/
public class JavaArithmetic {
public static void main(String[] args) {
getPerfectNumber();
}
/**
* 求100-1000之内的水仙花数题目
* 所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
* 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方
* 1.程序分析:
* 利用for循环控制100-1000个数,
* 每个数分解出个位,十位,百位。
*/
public static void getNarcissisticNumberByFor(){
for (int i = 100; i < 1000; i++) {
int the=i%10;
int unit=i/10%10;
int decade=i/100;
if(the*the*the+unit*unit*unit+decade*decade*decade==i){
System.out.println("水仙花数 :" + i);
}
}
}
/**
* 采用while的形式,当然页可以采用do while的形式
*/
public static void getNarcissisticNumberByWhile(){
int i = 100;
while ( i < 1000) {
int the=i%10;
int unit=i/10%10;
int decade=i/100;
if(the*the*the+unit*unit*unit+decade*decade*decade==i){
System.out.println("水仙花数 :" + i);
}
i++;
}
}
/**
* 完全数(Perfect number),
* 又称完美数或完备数,是一些特殊的自然数。
* 它所有的真因子(即除了自身以外的约数)的和(即因子函数),
* 恰好等于它本身。
* 如果一个数恰好等于它的因子之和,则称该数为“完全数”。
* 如 6 = 1 + 2 + 3
*
* 判断是否为完全数
*/
public static void isPerfectNumber(int number){
int sum=0;
for (int i = 1; i < number; i++) {
if(number%i==0){
sum+=i;
}
}
if(sum==number){
System.out.println(number+"是完全数");
}else{
System.out.println(number+"不是完全数");
}
}
/**
* 输出1-1000以内的完全数
*/
public static void getPerfectNumber(){
int number=1;
while(number<1000){
int sum=0;
int num=number++;
for (int i = 1; i < num; i++) {
if(num%i==0){
sum+=i;
}
}
if(sum==num){
System.out.println(num+"是完全数");
}
}
}
}