zoukankan      html  css  js  c++  java
  • 质数的问题?

    找出从 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 }
  • 相关阅读:
    视觉三维重建中不同三角网格视角的选择
    最小二乘求解常数k使得kx=y(x,y为列向量)
    STL常用
    2D-2D:对极几何 基础矩阵F 本质矩阵E 单应矩阵H
    Ubuntu常用软件
    ubuntu linux 安装分区
    单向链表
    1.ssm web项目中的遇到的坑--自定义JQuery插件(slide menu)
    模板引擎freemarker的使用(二)
    模板引擎freemarker的使用(一)
  • 原文地址:https://www.cnblogs.com/guodong-wang/p/6938394.html
Copyright © 2011-2022 走看看