打印100~200 之间的素数
素数只能被1和它本身整除
1.试除法
//方法一:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int j = 0;
int count = 0;//count用于统计素数的个数
for (i = 100; i <= 200; i++)
{
for (j = 2; j <= i - 1; j++)
{
if (i%j == 0)
break;
}
if (j == i)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
system("pause");
return 0;
}
//方法二:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int j = 0;
for (j = 2; j <= (i / 2); j++)
{
if (i%j == 0)
break;
}
if (j>(i / 2))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
system("pause");
return 0;
}
//方法三:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int count = 0;
for (i = 101; i <= 200; i += 2)
{
int j = 0;
for (j = 2; j <= i - 1; j++)
{
if (i%j == 0)
break;
}
if (i == j)
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
system("pause");
return 0;
}
2.素数是不能被2到本身开方之间任一整数整除的整数
//方法四:
#include<stdio.h>
#include<stdlib.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++)
{
if (i%j == 0)
break;
}
if (j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
system("pause");
return 0;
}
//方法五:相对而言此方法最优化
#include<stdio.h>
#include<math.h>
#include<stdlib.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++)
{
if (i%j == 0)
break;
}
if (j>sqrt(i))
{
count++;
printf("%d ", i);
}
}
printf("\ncount=%d", count);
system("pause");
return 0;
}
运行结果: