找出从 2 开始到某个数值范围内的所有质数,并输出结果。 因为输出的质数可能较多,要求分行输出,每行最多输出 10 个质数。
1. 何为质数?
质数,又称素数,在大于1的自然数中,只能被1和它本身整除的数,反之,就是除了1和它本身之外,不能被其它的自然数整除。、
2. 如何判断某个数n是质数?
1)在2到n的范围内,是否有一个数可以整除n,如果整除,则不是质数,不能整除,则是质数。
2)就是在2到n的循环里面的数i,判断n%i==0,取模为0则不是质数,否则是质数。
3)代码实现:
1 public class isPrime { 2 public static void main(String[] args) { 3 4 Scanner s = new Scanner(System.in); 5 int num = s.nextInt(); 6 boolean flag = true; 7 for(int i=2;i<num;i++) { 8 if(num%i == 0) { 9 flag = false; 10 break; 11 } 12 } 13 if(flag) { 14 System.out.println(num+"是质数!"); 15 } else { 16 System.out.println(num+"不是质数"); 17 } 18 19 } 20 }
4)算法优化:要判断2到n的范围内是否有一个数可以整除n,如果判断2到n的平方根的范围内不能整除,则2到n的范围内也不能整除,则代 码改为:
1 public class isPrime { 2 public static void main(String[] args) { 3 4 Scanner s = new Scanner(System.in); 5 int num = s.nextInt(); 6 boolean flag = true; 7 for(int i=2;i<Math.sqrt(num);i++) { 8 if(num%i == 0) { 9 flag = false; 10 break; 11 } 12 } 13 if(flag) { 14 System.out.println(num+"是质数!"); 15 } else { 16 System.out.println(num+"不是质数"); 17 } 18 19 } 20 }
3. 如何判断某个范围内的数是否是质数
采用循环,依次判断每个数是否是质数,则将判断某个数为质数改成方法;在main方法中只需在循环中调用判断是否是质数,是则输出
5. 代码实现:
1 package com.java.demo; 2 3 import java.util.Scanner; 4 5 /** 6 * 2. 找出从 2 开始到某个数值范围内的所有质数,并输出结果。 7 * 因为输出的质数可能较多,要求分行输出,每行最多输出 10 个质数。 8 * 质数:又称素数,只能被1和它本身整除的数 9 * 结论 10 * 1)是质数:取余所有都不得0 11 * 2)不是质数:只要有得0 12 * @author Administrator 13 * 14 */ 15 public class Homework02 { 16 public static void main(String[] args) { 17 Scanner scanner = new Scanner(System.in); 18 System.out.print("请输入查找质数的范围2到"); 19 int n = scanner.nextInt(); 20 int count=0; //质数的个数 21 for(int i=2;i<n;i++) { 22 if(isPrime(i)) { 23 System.out.print(i+" "); 24 count++; 25 if(count%10 == 0) { 26 System.out.println(); 27 } 28 } 29 } 30 System.out.println(); 31 System.out.println("共有"+count+"个质数"); 32 33 } 34 /** 35 * 判断某个数是否是质数 36 * @param num 37 * @return 38 */ 39 public static boolean isPrime(int num) { 40 boolean flag = true; //1. 假设是质数 41 for(int i=2;i<=Math.sqrt(num);i++) { 42 if(num%i == 0) { 43 flag = false; //2. 表明不是质数 44 break; 45 } 46 } 47 return flag; 48 } 49 }
时间: 2024-10-13 16:02:33