【Java基础题】求素数

求素数
设计一个程序, 输入N, 输出0~N之间的所有素数
(0<N<MAX_INT)
样例输入:
100
样例输出:
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

让我们先来回顾一下素数的概念:

素数(Prime number),又称质数,是在大于1的自然数中,除了1和它本身以外不再有其他因数的数。换句话说,如果一个数只有1和它本身两个正因数,那么这个数就是素数。
例如,2、3、5、7、11、13、17、19、23等都是素数。其中,2是唯一的偶数素数,其他素数都是奇数。
素数在数论中有着非常重要的地位,它们是构成自然数的基础。此外,素数在密码学、计算机科学等领域也有着广泛的应用。
判断一个数是否为素数,有多种方法,如试除法、埃拉托斯特尼筛法等。其中,试除法是最简单直接的方法,但对于大数来说效率较低;埃拉托斯特尼筛法可以高效地找出一定范围内的所有素数。
需要注意的是,1不是素数,因为它只有一个正因数。同样,0和负数也不是素数。
 

代码逻辑:

  1. isPrime函数接受一个整数参数num,并返回一个布尔值,表示这个数是否为素数。函数内部使用一个循环,从2开始,到Math.sqrt(num)结束,判断num是否能被其中的任何一个数整除。如果能,则返回false,表示num不是素数;否则返回true,表示num是素数。这里使用Math.sqrt(num)作为循环的上限,是因为如果一个数不是素数,那么它必定有一个因数小于或等于它的平方根。

  2. main函数首先通过Scanner类从用户那里获取一个整数N,然后输出"0到N之间的所有素数如下:"。接着,使用一个循环,从2开始,到N结束,对每个数调用isPrime函数。如果isPrime函数返回true,则输出当前的数,即为素数。

代码如下:

import java.util.Scanner;

public class Main {
    public static boolean isPrime(int num) {
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字N (0<N<MAX_INT): ");
        int N = scanner.nextInt();
        System.out.println("0到N之间的所有素数如下:");
        for (int num = 2; num <= N; num++) {
            if (isPrime(num)) {
                System.out.println(num);
            }
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七洛殇Atrosenet.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值