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);
}
}
输出结果:
