您的位置:首页 > 其它

求1到10000之内的质数的和

2016-08-09 20:14 204 查看
第一种方法:

首先1不是质数,2是质数,质数是指只能被1和它本身整除的数。

因为除了2之外,偶数一定不是质数,所以只需要遍历3到10000之间的奇数就可以了。

class Program
{
static void Main(string[] args)
{
int sum = 2;
for (int i = 3; i < 10000; i += 2)
{
bool b = true;
for (int j = 3; j <= i / 3; j += 2)//验证到i/3如果再不能被整除,就一定是质数了
{
if (i % j == 0)
{
b = false;
break;
}
}
if (b)
{
sum += i;
}

}
Console.WriteLine(sum);
Console.ReadLine();
}
}


第二种方法:亮灯灭灯法,设有10000个灯,把不是质数的灯灭掉剩下的数就是质数。

class Program
{
static void Main(string[] args)
{
bool[] b = new bool[10000];//设置一万盏灯
for (int i = 0; i < b.Length; i++)
{
b[i] = true;//给所有灯,亮灯
}
b[0] = false;//给第一个数0灭灯
b[1] = false;//给第二个数1灭灯
for (int i = 2; i < 100; i++)
{
for (int j = 2; i*j < 10000; j++)
{
b[i * j] = false;//i*j等于出来的都灭灯
}
}
int sum = 0;
for (int i = 0; i < b.Length; i++)
{
if (b[i])//如果这个数亮灯
{
sum += i;
}
}
Console.WriteLine(sum);
Console.ReadLine();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: