qq_独孤九潇_0
2018-05-21 18:03
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
for(int i=2;i<=100;i++)
{
for(int a=2;a<=i;a++)
{
if(i%a==0&&a!=1)
{
Console.WriteLine(i);
break;
}
}
}
}
}
}这个循环哪里有错
a<=i是不是有问题,假如i=2,那么第一次循环a=2,a%a为 2%2=0,且a!=1,自己处以自己怎么能算非素数呢,
所以我觉得应该a<i,还有一点,这个有个数学问题,a<Math.Ceiling(Math.Sqrt(i))这样能减少运算次数,一般都是开根号来算,我也没找到证明,你就自己查Prime函数,都是这么写
for (int i = 2; i <= 100; i++)
{
for (int a = 2; a <= i; a++)
{
if (i % a == 0 && a != i)
{
break;
}else if (a == i){
Console.WriteLine("素数" + i);
}
}
}
for (int i = 2; i <= 100; i++)
{
for (int a = 2; a <= i; a++)
{
if (i % a == 0 && a != i)
{
Console.WriteLine("非素数"+i);
break;
}
}
}
C#开发轻松入门
254118 学习 · 1459 问题
相似问题