学编程,你必须掌握的几种算法编程

170 阅读2分钟

打印100以内的所有素数

首先解释一下什么是素数:

素数:只能被1 和自身整除的数 称为素数 也叫质数 其他的成为 合数 1既不是质数也不是合数。

代码实现:

for(int i=2;i<=100;i++){
            //需要对每一个i进行判断,如果满足素数的需求,就打印
            //用i 除以 2~ i-1  每一次操作都没有除尽,说明i 是素数
            //i%(2~ i-1)!=0
            boolean flag = false;
            for(int j = 2;j < i;j++){//如果整个内层循环执行过程中都没有成立里面的条件,说明i是素数。
                if(i%j==0){
                    //说明i 不是素数
                    flag = true;
                    break;
                }
            }
            if(false == flag){//i 是素数
                System.out.println("i = "+i);
            }
        }

也可以有第二种方法:

\

15200008-8f1e585ce3508b4e.png

求素数(方法2)


打印数学中几种常见的多边形

其实就是对java中循环的灵活使用,进行嵌套循环

public class TestFor4{
    public static void main(String[] args){
        //width
        //height
        int width = 20;
        int height = 10;
        //矩形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<width;j++){//内层循环控制打印 width 个 *  + \n
                System.out.print(" *");
            }
            System.out.print("\n");
        }
        System.out.println();
        //平行四边形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<height-i-1;j++){//打印若干个空格
                System.out.print(" ");
            }
            for(int j=0;j<width;j++){//内层循环控制打印 width 个 *  + \n
                System.out.print(" *");
            }
            System.out.print("\n");
        }
        System.out.println();
        //平行四边形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<i;j++){//打印若干个空格
                System.out.print(" ");
            }
            for(int j=0;j<width;j++){//内层循环控制打印 width 个 *  + \n
                System.out.print(" *");
            }
            System.out.print("\n");
        }
        System.out.println();
        //等腰三角形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<height-i-1;j++){//打印若干个空格
                System.out.print("  ");
            }
            for(int j=0;j<2*i+1;j++){//内层循环控制打印*  + \n
                System.out.print(" *");
            }
            System.out.print("\n");
        }
        
        //菱形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<height-i-1;j++){//打印若干个空格
                System.out.print("  ");
            }
            for(int j=0;j<2*i+1;j++){//内层循环控制打印*  + \n
                System.out.print(" *");
            }
            System.out.print("\n");
        }
        //菱形下半部分倒置的等腰三角形
        for(int i=0;i<height;i++){//外层循环控制打印的行数
            for(int j=0;j<i;j++){//打印若干个空格
                System.out.print("  ");
            }
            if(i > 0){
                for(int j=0;j<height*2-1-2*i;j++){//内层循环控制打印*  + \n
                    System.out.print(" *");
                }
                System.out.print("\n");
            }
        }       
    }
}

百钱买百鸡问题

问题:公鸡5块钱一只,母鸡 3钱 一只, 小鸡 一元三只 ,100钱买100只鸡。有多少种组合。
方法一(三层for循环)

for(int i = 0;i<=20;i++){
            for(int j=0;j<=33;j++){
                for(int k = 0;k <=300; k++){
                    if(i + j + k == 100 && (i*5 + j * 3 + k/3 == 100) && k % 3 == 0 ){//小鸡必须是3的倍数
                        System.out.println("公鸡:"+ i + "\t母鸡:"+j+"\t小鸡:"+k);
                    }
                }
            }
        }

方法二

//使用双层循环实现
        for(int i = 0;i<=20;i++){
            for(int j=0;j<=33;j++){
                    int k = 100 - i - j;
                    if((i*5 + j * 3 + k/3 == 100) && k % 3 == 0 ){//小鸡必须是3的倍数
                        System.out.println("公鸡:"+ i + "\t母鸡:"+j+"\t小鸡:"+k);
                    }
            }
        }

方法三\

15200008-328625f8363aa6f3.png

百钱买百鸡方法3


九九乘法表的打印

大体思路:九九乘法表 for 情怀 外层循环控制行数 内层循环控制 本行打印几列
代码实现:

for(int i = 1;i<=9 ;i++){
            for(int j = 1 ;j <=i ;j++){
                System.out.print(j + "*" + i + "="+(j*i)+"; ");
            }
            System.out.println();
        }

斐波那契数列

特点:第一个和第二个数值都为1,从第三个位置开始,数值为前两个数值只和。
例如:1,1,2,3,5,8,.....
要使用阶乘来实现

public static int febo(int n){
        if(n == 1 || n == 2){
            return 1;
        }else{
            return febo(n-1)+febo(n-2);
        }
    }

水仙花数

题目:水仙花数:在 100-999 之间有几个这样的数 : 该三位数的每一位的 三次幂 之和 等于该数自身 求这几个数是什么??

// 水仙花数:在 100-999  之间有几个这样的数  : 该三位数的每一位的 三次幂  之和 等于该数自身  求这几个数是什么??
public class TestFor2{
    public static void main(String[] args){
        
        for(int i=100;i<1000;i++){
            int a = i%10;//个位
            int b = i/10%10;//十位
            int c = i/100;
            
            if(a * a * a + b * b * b + c * c * c == i){
                System.out.println(" i = "+ i);
            }
        }   
    }
}