素数,又称质数,指在大于1的自然数中,其因数仅包括1和本身两个数的数字。在计算机科学中,求解素数是一项常见而重要的任务。本文将介绍如何使用C#编程语言实现求解n以内所有素数的算法,并附上完整源码。
算法思路:
使用埃拉托色尼(Erathostenes)筛法求解素数。
步骤如下:
1.构建一个长度为n+1的bool数组,表示每个数字(包括0和n)是否是素数。
2.将数组元素全部初始化为true。
3.从2开始循环至sqrt(n),对于每个i,如果数组元素arr[i]为true,则将arr[i]的倍数全部标记为false。
4.遍历数组arr,输出所有值为true的元素的下标即可。
C#源码:
using System;
class Program
{
static void Main(string[] args)
{
Console.Write("请输入n的值:");
int n = int.Parse(Console.ReadLine());
bool[] arr = new bool[n + 1];
for (int i = 2; i <= n; i++)
{
arr[i] = true;
}
for (int i = 2; i * i <= n; i++)
{
if (arr[i])
{
for (int j = i * i; j <