求10以内的质数
- 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
参考代码
int i, j;
for (i = 1; i <= 10; i++) {
for (j = 2; j < i; j++) {
if (i % j == 0)
//若能整除,说明该数除了被1和它本身整除还能被其他数整除
break;//跳出循环
}
if (i == j)
System.out.println(j + "是质数");
}
运行结果
求100-1000内的水仙花数
- 水仙花数各个位数的立方和等于该数,例如:1^3 + 5^3+ 3^3 = 153
参考代码
for (int i = 100; i < 1000; i++) {//100-1000以内
int a = i, sum = 0;
while (a > 0) {//依次求得 个位^3 十位^3 百位^3 并求和
int b = a % 10;
/*
153%10=3
15%10=5
1%10=1
*/
sum += b * b * b;//sum=sum+b^3 sum=个位^3+十位^3+百位^3
a /= 10;
/*
153/10=15
15/10=1
1/10=0
*/
}
if (sum == i)//个位^3 十位^3 百位^3 之和=i
System.out.println(i + "是水仙花数");
}
运行结果
青蛙跳台阶问题
一共有n个台阶,一只青蛙每次只能跳一阶或是两阶,那么跳到顶端一共有多少种的方案?如n=2,一共有两种方案,一次跳两阶或每次跳一阶
- 此问题用到了动态规划:利用上一次得到的结果,为下一次作参考,下一次利用上一次的结果快速求得结果
参考代码
//以20阶为例
int[] arr=new int[20];
arr[0]=1;//跳一阶有一种
arr[1]=2;//跳两阶有两种:每次一阶/一次两阶
for(int i=2;i<20;i++){//i=2,从三阶台阶开始;i<20,到第20阶
arr[i]=arr[i-1]+arr[i-2];
//i+1阶台阶可以先跳i阶,再跳1阶;也可以先跳i-1阶,再跳2阶
//故i+1阶共有(i阶的跳法数)+(i-1阶的跳法数)
System.out.println((i+1)+"阶台阶有"+arr[i]+"种跳法");
}