素数的定义:素数又叫质数,有无限个。在大于1的自然数中,除了1和它本身以外不再有其他约数。
素数判断方法1:试除法
如11,则2-10(即n-1)之间查找是否有数能整除11;如果能整除,则说明11不是素数
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;//计算一共有多少个素数
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
break;
}
}
if (j == i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = % d\n", count);
return 0;
}
优化1
一个数i,如果它能够被另外两个数整除i=a*b(如16 = 2*8 = 4*4),说明a或b中至少有一个数字<=开平方,则优化如下:
#include <stdio.h>
#include <math.h>
int main()
{
int i=0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j <= sqrt(i); j++)//sqrt - 开平方的数学库函数(math.h)
{
if (i % j == 0)
{
break;
}
}
if (j > sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}
优化2
奇数就是素数,那么优化如下
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)
{
int j = 0;
for (j = 2; j <= sqrt(i); j++)//sqrt - 开平方的数学库函数(math.h)
{
if (i % j == 0)
{
break;
}
}
if (j > sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d\n", count);
return 0;
}