java 实现(代码) -- 水仙花数 + 杨辉三角形

时间:2023-03-09 04:06:32
java 实现(代码) -- 水仙花数 +  杨辉三角形
 /*
在控制台输出所有的“水仙花数”
水仙花:100~999 在以上数字范围内:这个数=个位*个位*个位+十位*十位*十位+百位*百位*百位 例如:xyz=x^3 +y^3 +z^3 怎么把三位数字拆成每位整数 思路:百位: int x= i / 100
十位: int y = i / 10 % 10
个位: int z = i % 10 */
class LoopTest3 {
public static void main(String[] args)
{
for (int i=100; i<=999 ; i++ ){
int x= i / 100;
int y = i / 10 % 10;
int z = i % 10; //本身的数字是i ,x, y, z是百位十位个位
if (i == x* x* x+ y* y* y+ z* z* z){
System.out.println(i);//i=153,370,371,407 //153=1^3+ 5^3 +3^3=1 + 125+ 27
}
}
}
}

--------------------------------------------------------------------------------------------------------------------------------

 import java.util.Scanner;

 /*
杨辉三角形:当前行的每个元素是当前行这个元素的上一行和上一行左侧元素的和 分析: 这个题目,使用了如下的技能点: for循环:两个for循环的嵌套
动态数据:这个元素的上一行和上一行左侧元素的和
静态数据:每一行的第一列和最后一列都是:1 数组的元素可以通过下标索引快速定位,赋值 用两个for 循环控制一个二维数组得到最终的结果 目的: 拓展传智学生的视野面,不要求掌握,需要理解。能够听懂,后期完成掌握。 1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1 */
class YangHui {
public static void main(String[] args) {
int [ ][ ] san = new int [6][6]; //我比会做三角形,我会做矩形,赋值给三角形静态数据1
for (int i =0; i<6; i++){//控制行
for (int j =0; j<=i; j++){//控制列
san[i][j] = 1;
}
} //做二维数组的动态数据的赋值
for (int i =2; i<6; i++){
for(int j =1; j<=i-1; j++){
//上一行现在代码都执行到这里了,还能回去吗? 可以 上一行这个数据可以用二维数组的下标定义
san[i][j] = san[i-1][j] + san[i-1][j-1];
}
} for(int i =0; i<6; i++){//控制行
for(int j =0; j<= i; j++){//控制列
System.out.print( san[i][j] + " ");
}
System.out.println( );
}
}
}