定义:素数只能被1和它自身整除的数,1不是素数 (2是最小的素数)
思路: 求某个数N是不是素数?用for循环让N依次除以 从2~(N-1)之间的数,如果能被整除,则N不是素数,反之则是。
bool flag;//声明一个bool值用来判断是否是素数
for (int i = 2; i <= 1000; i++)//循环 1000以内的数
{
//每次循环都把flag的值设置为true,
flag = true;
//开始第二次循环,让 i 依次除与 2 和小于它的数,当i= 2时(j < i 条件不成立),直接跳出循环输出:素数 2
for (int j = 2; j < i; j++)
{
//当 i 可以被 j 整除时跳出该循环,该数不是素数,不做输出
if (i % j == 0)
{
flag = false;
break;
}
}
if (flag)
{
Console.WriteLine("素数 "+i);
}
}
Console.ReadKey();
运行结果
提升:
1.除了2,其他偶数都不是素数,可以加一个判断语句,排除偶数。
2.一个整数N是无法被大于N/2数整除的,只要判断前面的2-N/2之间范围,节约运算次数。
3.在提升一步不需要从2判断到N-1,一个数进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n)【n的开方】,一个大于等于sqrt(n),据此,上述代码中并不需要遍历到(N-1),遍历到sqrt(n)即可,