判断素数的方法:
1.用3-100间的所有数字,除以从2开始一直到他前面一个数的所有数,若出现能整除的情况,则不是素数。
2.(我们知道,非素数可以写成除了1和它本身相乘的a*b方式,而a、b之间必有一个小于等于ab之积的开平方根;如果这个非素数能够被a整除,则相应的肯定会被b整除。)因此我们可以用这个数除以从2开始到该数的平方根的所有数字,若出现能整除的情况,则不是素数。
3.(我们知道所有的偶数都不是素数)所以在排除偶数的情况下,再使用法2可以使算法效率更高。
这里我们采用方法3
#include <stdio.h>
#include <math.h>
//编写一个程序,输入3~100中的全部素数,每10个一行
void main() {
int i, j,count = 0;
for (i = 3; i <= 100; i+=2)
{
for (j = 2; j <= sqrt(i); j++)
{
if (i % j == 0) break;//若该数能被j整除,则不是素数,直接跳出循环;
}
if (j>sqrt(i))//若i是素数,则j应该>他的开平方
{
printf("%d ", i);
count++;
if (count % 10 == 0) //判断是否达到10个素数,若达到,则换行
{
printf("\n");
}
}
}
}