题目描述:打印100-200之间的素数
解题思路:
1,明确素数定义:素数是能被1和它本身整除的正整数。
方法一:试除法
1)从2到n-1,逐个尝试是否能够整除n,若可以,n不是素数;若不可以,n不是素数。
2)当n为偶数时,n一定不是素数,因为偶数不仅可以被1和它本身整除,也至少可以被2整除,那
么在找素数时,我们可以直接跳过偶数。
#include <stdio.h>
int main() {
int i,j;
for(i=100; i<=200; i++)
{
//定义变量,假设是素数,变量值为1
int flag=1;
for(j=2; j<i; j++)
{
//判断是否存在一个数可以整除当前数
if(i%j==0)
{
//不是素数
flag=0;
break;
}
}
//若是素数就打印
if(flag == 1)
{
//注意:printf后有空格,这样可以使得打印结果之间有空格,看起来更加明确且美观
printf("%d ",i);
}
}
return 0;
}
运行结果:
方法二:(优化版,由方法一中可以跳过偶数,在查找素数直接判断奇数是否是素数)
#include <stdio.h>
int main() {
int i,j;
//从101开始判断,判断结束后i在上一次的基础上加2,直接越过了偶数,节约判断时间
for(i=101; i<=200; i+=2)
{
//定义变量,假设是素数,变量值为1
int flag=1;
for(j=2; j<i; j++)
{
//判断是否存在一个数可以整除当前数
if(i%j==0)
{
//不是素数
flag=0;
break;
}
}
//若是素数就打印
if(flag == 1)
{
//注意:printf后有空格,这样可以使得打印结果之间有空格,看起来更加明确且美观
printf("%d ",i);
}
}
return 0;
}
运行结果:
方法三:
#include <stdio.h>
#include <math.h>
int main()
{
int i,j;
for(i=101; i<=200; i+=2)
{
//定义变量,假设是素数,变量值为1
int flag=1;
for(j=2; j<sqrt(i); j++)
{
//判断是否存在一个数可以整除当前数
if(i%j==0)
{
//不是素数
flag=0;
break;
}
}
//若是素数就打印
if(flag == 1)
{
//注意:printf后有空格,这样可以使得打印结果之间有空格,看起来更加明确且美观
printf("%d ",i);
}
}
return 0;
}
运行结果:
以上运行结果均是在方法一和方法二和方法三这三种代码下实现的,编译环境为Dev-c++。
注意:sqrt()函数用于计算一个非负实数平方根。