当前位置: 首页 > news >正文

接收用户输入的数字,判断是否是质数(素数)以及输出1-100之间的所有质数

问题描述:接收用户输入的数字,判断是否是质数(素数)以及输出1-100之间的所有质数

质数的概念:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数叫做质数,也称为素数

规定:1既不是质数也不是合数

实现思路:
初始化Scanner对象以接收用户输入。
使用Scanner的nextInt方法读取用户输入的一个整数。
使用一个for循环从0遍历到100,对每一个整数调用isPrime2方法判断是否为质数,如果是,则将其输出到控制台。
isPrime1方法(暴力迭代法):
检查输入的数字是否小于或等于1,如果是,则直接返回false(因为质数定义为大于1的自然数)。
使用for循环从2遍历到输入的数字减1,检查是否存在一个数能够整除输入的数字。
如果存在这样的数,则返回false,表示输入的数字不是质数。
如果循环结束都没有找到能整除的数,则返回true,表示输入的数字是质数。
isPrime2方法(平方根):
首先检查输入的数字是否小于或等于1,如果是,返回false。
使用数学定理进行优化:一个合数一定可以分解为两个因数,且至少有一个因数不大于它的平方根。因此,我们只需要检查从2到该数字平方根的所有整数是否能整除它。
使用for循环从2遍历到输入数字的平方根(取整),检查是否存在一个数能够整除输入的数字。如果存在这样的数,返回false;否则,返回true。

 

代码实现:

方法一: 暴力迭代法

public static boolean isPrime1(int number) {if(number<=1) {return false;}for(int i=2;i<number;i++) {if(number%i==0) {return false;}}return true;}

输出结果:

32
false

方法二:平方根

  • 数学定理:如果一个数n不是质数,则n = x * y,
  • 并且同时满足:x<=sqrt(n) y>=sqrt(n)
  • 例如:100 = 2*50 =4*25 = 5*20 = 10*10

代码实现:

//平方根public static boolean isPrime2(int number) {//数学定理:如果一个数n不是质数,则n = x * y,//并且同时满足:x<=sqrt(n) y>=sqrt(n)//例如:100 = 2*50 =4*25 = 5*20 = 10*10if(number<=1) {return false;}for(int i=2;i<=Math.sqrt(number);i++) {if(number%i==0) {return false;}}return true;}

输出结果:

32
false

输出1-100之间的所有质数

代码实现:

package com.ztt.exercise.Demo04;import java.util.Scanner;
/** 接收用户输入的数字,判断是否是质数(素数)*/public class demo04 {public static void main(String[] args) {try(Scanner input=new Scanner(System.in)){int n=input.nextInt();boolean ret=isPrime1(n);System.out.println(ret);}for(int i=0;i<=100;i++) {if(isPrime2(i)) {System.out.println(i);}}}

 输出结果:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

 

 

 

 

http://www.lryc.cn/news/321148.html

相关文章:

  • 人脸识别AI视觉算法---豌豆云
  • Apache SeaTunnel MongoDB CDC 使用指南
  • 智能合约 之 部署ERC-20
  • 【C++】用红黑树模拟实现set、map
  • 实现:mysql-5.7.42 到 mysql-8.2.0 的升级(二进制方式)
  • 深入探讨医保购药APP的技术架构与设计思路
  • react中点击按钮不能获取最新的state时候
  • 2、鸿蒙学习-申请调试证书和调试Profile文件
  • 蓝桥杯算法基础(13):十大排序算法(希尔排序) (快速排序)c语言版
  • web学习笔记(三十二)
  • Android 地图SDK 绘制点 删除 指定
  • Nodejs 第五十八章(大文件上传)
  • Linux编译器--gcc/g++的使用
  • 苍穹外卖-day13:vue基础回顾+进阶
  • 蓝桥杯/慈善晚会/c\c++
  • 2024.3.19
  • 【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例
  • 【DataWhale学习笔记】使用AgentScope调用qwen大模型
  • 【C++】手撕AVL树
  • 探索 TorchRe-ID--基于 Python 的人员再识别库
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)
  • tmux最基础的一点应用-不用一直挂着ssh,可以干点别的事情
  • Java推荐算法——特征加权推荐算法(以申请学校为例)
  • 探索什么便签软件好用,可以和手机同步的便签软件
  • 字符函数与字符串函数
  • Kubernetes 项目整体布局 el-container
  • AI赋能写作:AI大模型高效写作一本通
  • unraid docker.img扩容
  • Python 实现1~100之间的偶数求和
  • Leetcode 387. First Unique Character in a String