1./**
* 输出2-100内的质数
*
* @author taochongyin
*
*/
public class IsPrime {
public static void main(String[] args) {
// 声明变量j(此处之所以这样声明是为了扩大j的作用域,使得程序在break后依然可以使用j)
int j;
// 遍历2-100之间的数字
for (int i = 2; i < 100; i++) {
// 由于一个数如果能被其他数整除的话,那么这两个数应该一个比除数的算数平方根大,另一个比除数的算术平方根小(极限状态是算术平方根),所以除数的上限应该是i的算术平方根
for (j = 2; j < Math.sqrt(i); j++)
// 循环遍历j,如果i能整除j,则证明i不是质数
if (i % j == 0)
// 此时让本循环break,判断结束,直接进入下一个i的循环
break;
// 如果j比i的算术平方根大,则证明无法找到两个数字的乘积等于i,即i是质数
if (j > Math.sqrt(i))
// 输出符合条件的质数i
System.out.println(i);
}
}
}
2.import java.util.Scanner;
/**
* 可以选择输出一定范围内质数的类,只要输入开始和结束数字,就可以输出它们之间的质数
* @author taochongyin
*
*/
public class EachPrime {
//写一个方法供主函数调用,作用就是输出相应范围内的质数,算法和isPrime那个类相同,但是传了两个参数,即开始数字与结束数字
public void isPrime(int startNum, int endNum) {
int j;
for (int i = startNum; i < endNum; i++) {
for (j = 2; j < Math.sqrt(i); j++)
if (i % j == 0)
break;
if (j > Math.sqrt(i))
System.out.println(i);
}
}
public static void main(String[] args) {
//创建一个本类的实例,用于调用上面的isPrime方法
EachPrime prime = new EachPrime();
//创建一个Scanner类的实例,用于在控制台取得开始和结束数字
Scanner scanner = new Scanner(System.in);
System.out.println("请输入开始数字:");
int startNum = scanner.nextInt();
System.out.println("请输入结束数字:");
int endNum = scanner.nextInt();
//在取得开始和结束数字后,本类的实例prime调用上面的isPrime方法输出质数
prime.isPrime(startNum, endNum);
}
- 1
- 2
前往页