用模0除以素数

时间:2015-07-17 11:07:39

标签: c#

假设我的号码是3294830924。

我想把它除以素数,2,3,5,7,11等。

我想知道哪些操作给了我modulo 0。

类似的东西:

int[] primeNumbers = ...;
var n = 3294830924;
return primeNumbers.Where(pn=> pn < n).Where(pn=> n % pn == 0)

是否有任何内置函数或方法来获取C#中的素数列表或以数学方式计算它?

2 个答案:

答案 0 :(得分:1)

您可以下载,生成或连接带有素数列表的数据库,并在每次需要执行此操作时使用此列表。

例如,前10,000个素数的列表:

https://primes.utm.edu/lists/small/10000.txt

和前5000万个素数:

https://primes.utm.edu/lists/small/millions/

如果这些数字位于关系数据库(例如SQL Server Express)的表中,那么您可以使用linq更有效地检查数字是否为素数,因为您可以使用素数的聚簇索引。

答案 1 :(得分:1)

您可以创建自定义函数来检查Prime,

private bool IsPrime(int number)
{
if (number < 2) return false;
if (number == 2) return true;
if (number % 2 == 0) return false;
for (int i = 3; i * i <= number; i += 2)
if (number % i == 0) return false;
return true;
}

然后将素数计算为

var primes =
from number in Enumerable.Range(1, your_number)
where IsPrime(number)
select number;