什么是素数?
素数=质数
只能被1和他本身整除
第一种方法
普通版
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int flag = 1;//表示是素数
//判断i是否为素数
//使用2~i-1之间的数字去试除i
int j = 0;
for (j = 2; j < i; j++)
{
//拿j来试除i
if (i % j == 0)
{
flag = 0;
break;
}
}
if (1 == flag)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
这种方法是解题的一种方法,但是其计算量太大,并不是最有效的办法
第二种方法
开平方版
- i=m*n
- m和n中至少有一个数字是<=开平方i的
#include <math.h>
//欲使用sqrt需先包含一个头文件
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int flag = 1;//表示是素数
//判断i是否为素数
//使用2~i-1之间的数字去试除i
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
//拿j来试除i
if (i % j == 0)
{
flag = 0;
break;
}
}
if (1 == flag)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}
这种方法可以大大的减少计算量,是一种很好的优化方法
#include <math.h>
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i+=2)//素数肯定不是偶数,故可以
{
int flag = 1;//表示是素数
//判断i是否为素数
//使用2~i-1之间的数字去试除i
int j = 0;
for (j = 2; j <= sqrt(i); j++)
{
//拿j来试除i
if (i % j == 0)
{
flag = 0;
break;
}
}
if (1 == flag)
{
count++;
printf("%d ", i);
}
}
printf("\ncount = %d\n", count);
return 0;
}