java利用递归求1~100内所有素数,并且每输出五个换一行

java利用递归求1~100内所有素数,并且每输出五个换一行

实现原理和for循环差不多。

/**
 * 利用两个递归求出1~100内所有素数,并且每五个换一行。
 * 相当于两个for嵌套循环。
 * 原理:把1~100里每个数除以从1到它们自身,如果余数为零但是除数不为自身的话,则不是素数(排除掉能被自身之外的数整除的数)。再余数是零但是除数等于自身的话,就是素数。
 */
public class DiGuiQiuSuShu {
    static int count=0;
    public static void main(String[]args){
    SuShu(2);
    }

    /**
     * 定义i变量,初始值为2.
     * 假如i大于100,则结束递归。
     * 调用QiuSuShu方法进行素数判断。
     * 每次递归i自增1.
     * @param i
     */
    public static void SuShu(int i){
        int j;
        if(i==100){
            return;
        }
        QiuShuSu(i,2);
        SuShu(++i);
    }

    /**
     * 把SuShu方法里面的i变量给QiuSuShu方法,并且给j变量(除数),定义i变量,接受SuShu方法的i值,定义除数j的初始值为2.
     * 然后以除数原理来判断素数。
     * @param i
     * @param j
     */
    public static void QiuShuSu(int i,int j){

        if(j>i){
            return;
        }
        if(i%j==0&&i!=j){
            return;
        }
        if(i%j==0&&i==j){
            System.out.print(i+"\t");
            count++;//每输出一个数,count变量自增1.
            /*实现每输出5个换一行
                当count等于5时,则换行
                并且把count归零。
             */
            if(count==5){
                System.out.println();
                count=0;
            }
            return;
        }
        QiuShuSu(i,++j);
    }
}

输出结果:
在这里插入图片描述