讲解两种算法,其实是一种,只不过第二种在第一种的的方法优化了一点:
第一种:直接取100到200之间的奇数,因为偶数肯定不是素数,然后对每个数用取余数的方法判断是不是素数,最后再判断一下出来的数是否和自身相等,相等即是素数。
代码:
# include
# include
int主要()
{
int数,num1, num2=0;
(num1=101;num1 & lt;=200;num1 +=2)//偶数不是素数,直接用奇数。
{
(num2=2;num2 & lt;=num1;num2 + +)
{
如果(num1 % num2==0)
打破;
}
如果(num2==num1)//因为是素数的话,只有1和自身能除过。
{
printf (“% d“, num1);
+ +,
}
}
printf (“\ ncount=% d",计数),
系统(“pause");
返回0;
}
第二种:用到了平方根的办法来减少需要判断的数,
原因是因为
用到这个方法,同时也将较为抽象的判断素数方法变为引入一个参数来判断,更加清楚。
代码:
//打印100到200的素数(平方根优化法)
# include & lt; stdio.h>
# include & lt; stdlib.h>
# include & lt; math.h>
int主要()
{
int i t, k,数=0;
int国旗=0;//仅仅是判断是合数还是素数引入的一个参数
(k=100;k & lt;=200;k + +)
{
t=sqrt (k);
(i=2;我& lt;=t;我+ +)
{
如果(k % i==0)//判断语句你特么给我写上“==?别在犯错了!
{
标志=1;
打破;
}
}
如果(标志==0)
{
printf (“% d \ n", k);
+ +,
}
标志=0;//每次循环结束,参数要归零,不然后面都是1 .
}
printf (“=% d"计数,计数),
系统(“pause");
返回0;
}