求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]+"种跳法");
}

运行结果

最后修改:2023 年 02 月 08 日
如果想要赞赏,我绝不阻拦