判断 素数 质数

本文提供了两种不同的算法实现来生成特定范围内的素数:一种使用VBA编写,适用于较小的数值范围;另一种采用C++实现,可以高效地处理更大的数据集。通过这两种方法,读者能够了解到如何有效地筛选出素数,并理解其背后的数学原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Public Function IsPrime(ByVal n As Integer) As Boolean
    If n < 4 Then Return True
    If n Mod 2 = 0 Then Return False
    Dim k As Integer = Math.Floor(Math.Sqrt(n))
    For i = 3 To k Step 2
        If n Mod i = 0 Then Return False
    Next
    Return True
End Function




快速生成n以内的素数

Public Function GetPrime(ByVal n As Long) As Long()
    Dim arr(n + 1) As Boolean
    For i As Long = 2 To n / 2
        For j As Long = 2 To i
            Dim r As Long = i * j
            If r > n Then Exit For
            If Not arr(r) Then arr(r) = True
        Next
    Next
    Dim list As New List(Of Long)
    For i As Long = 2 To n
        If Not arr(i) Then list.Add(i)
    Next
    Return list.ToArray
End Function

http://acm.buaa.edu.cn/problem/187/


#include <iostream>
#include <cmath>
using namespace std;
unsigned short p[1000];

int main(void)
{
	bool is_prime;
	int c=2,k;
	p[0]=2;p[1]=3;
	for(int i=5;i<7920;i+=2)
	{
		is_prime=true;
		k=sqrt((double)i)+1;
		for(int j=1;j<c-1;j++)
		{
			if(p[j]>=k){break;}
			if(i%p[j]==0){is_prime=false;break;}
		}
		if(is_prime){p[c]=i;c++;}
	}
	int n;
	while(cin>>n)
	{cout<<p[n-1]<<endl;}
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值