作者: 大虾挂了 时间: 2013-9-13 15:35
按照判断条件改为开平方之后的方法,同步更新下,输出不大于某个数(这个数大于等于2)的所有质数和:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 输出不大于某个整数的所有素数
{
class Program
{
static void Main(string[] args)
{
int j = 3, i = 0;
Console.WriteLine("请输入一个大于2的正整数,我们将给出不大于这个数的所有素数");
int num = Convert.ToInt32(Console.ReadLine());
List<int> sushu = new List<int>();//创建一个存储素数的集合
sushu.Add(2);
for (; j <= num; j += 2)
{
for (i = 0; sushu[i] <= (int)Math.Sqrt(j); i++)
{
if (j % sushu[i] == 0)
break;
}
//里层for循环一次都不进行时(也就是j=3时):自然满足判断条件
//里层for循环有进行的时候,如果通过break结束(也就是遇到因子了),必然有sushu[i] <= (int)Math.Sqrt(j)
//最坏的情况是sushu[i] == (int)Math.Sqrt(j),也就是最后一次检验遇到了因子
//而如果一直未遇到因子,则跳出循环后必然有sushu[i] > (int)Math.Sqrt(j)
if (sushu[i] > (int)Math.Sqrt(j))
sushu.Add(j);
}
foreach (int k in sushu)
{
Console.Write("{0}\t", k);
}