打印100-200之间的素数?<重点掌握法3>
素数:
法2的解析:整除一个数至少是这个数的二倍
法3的解析:如果一个数不是素数,必有两个数相乘得到如x=a*b
a,b两个数中必定是一大一小,极端情况是a=b.即遍历到一个数的 开 方即可,用sqrt函数头文件<math.h>
<方法1>
#include<stdio.h>
#include<Windows.h>
int IsPrime(int x)
{
int i ;//从2开始
for (i=2; i < x; i++)
{
if (x%i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int x ;
for (x=100; x <= 200; x++)
{
if (IsPrime(x)){
printf("%d ", x);
}
}
printf("\n");
system("pause");
return 0;
}
方法2(法1的进阶)
#include<stdio.h>
#include<Windows.h>
int IsPrime(int x)
{
int i = 2;
for (; i<=x/2; i++)//整除一个数至少是这个数的二倍
{
if (x%i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int x = 100;
for (; x <= 200; x++)
{
if (IsPrime(x)){
printf("%d ", x);
}
}
printf("\n");
system("pause");
return 0;
}
法3:
#include<stdio.h>
#include<math.h>
#include<Windows.h>
int IsPrime(int x)
{
int i = 2;
double top = sqrt((float) x);
for (; i<=top; i++)
{
if (x%i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int x = 100;
for (; x <= 200; x++)
{
if (IsPrime(x)){
printf("%d ", x);
}
}
printf("\n");
system("pause");
return 0;
}