输出第N个素数

输出第N个素数

public class FindNthPrime
{
    public static void main(String[] args){
        int N = Integer.parseInt(args[0]); //要求输出第 N 个素数
        int[] PrimesVector = new int[N]; // 存储已经找到的素数
        PrimesVector[0] = 2; //第一个素数是2
        int CntPrime = 1; //目前找到的素数的数目是1
        for(int i = 3; CntPrime < N; i++)
        {
            boolean isPrime = true;
            // 因为非素数可以拆成素数的乘积,所以只需要考虑已经找到的素数
            for (int j = 0; j < CntPrime && PrimesVector[j]*PrimesVector[j] <= i; j++) 
            {
                if ( i % PrimesVector[j] == 0)
                {
                    isPrime = false;
                    break; //跳出循环
                }
            }
            if (isPrime)
            {
                CntPrime++;
                PrimesVector[CntPrime-1] = i;
            }
        }       
        System.out.println(" The " + N + "th prime is " + PrimesVector[N-1]);
    }
}

测试结果

转载于:https://www.cnblogs.com/learning-c/p/5204077.html

### 输出第 n 个质数的 C 语言实现 为了实现在 C 语言中输出第 n 个质数的功能,可以创建一个名为 `find_nth_prime` 的函数。此函数接收整型参数 `n` 表示要找到的是第几个质数,并返回相应的质数值。 下面是一个完整的 C 程序例子: ```c #include <stdio.h> #include <stdbool.h> bool is_prime(int num) { if (num <= 1) return false; for (int i = 2; i * i <= num; ++i) { if (num % i == 0) return false; } return true; } int find_nth_prime(int n) { int count = 0, prime_candidate = 2; while (true) { if (is_prime(prime_candidate)) { ++count; if (count == n) break; } ++prime_candidate; } return prime_candidate; } int main() { int nth; printf("Enter which prime you want to find: "); scanf("%d", &nth); if (nth > 0) { int result = find_nth_prime(nth); printf("The %d-th prime number is: %d\n", nth, result); } else { printf("Please enter a positive integer greater than zero.\n"); } return 0; } ``` 上述代码首先导入必要的头文件并声明辅助函数 `is_prime()` 来检测给定数字是否为素数[^2]。接着定义核心逻辑所在的 `find_nth_prime()` 函数用于定位指定位置上的素数。最后,在 `main()` 中获取用户输入的目标索引值 `n` 并调用前述两个函数完成计算与结果显示工作。 #### 关键点说明 - 使用布尔类型变量简化条件判断语句。 - 对于每一个候选者只测试到平方根范围内的除数即可提高效率。 - 当发现符合条件的新质数时增加计数器直到达到目标数量为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值