由于求素数运用的试除法
先说一下素数的定义:除了“1”和它本身就不能再分成其余两个数相乘(应该是这样,嘿嘿)
我捋一下思路:
如果题目说让找出100~200内的素数
按最原始的思路,宝贝们可能就想到了循环,多简单定义两个变量,让它们递增相除循环个2筛选一下,看看能不能被除尽,计算机计算多快啊!但是宝贝们,我们写程序就是想找到做简单的方法!
再给大家一个思路
如果它不是素数,呢么这个数是否就是可以分成两个数相乘
比如,9=3*3;8=2*4;
但是大家想想如果这样的话呢,是不是这个数拆成的两个数中,必定有一个数小于等于这个数的开平方(不信你可以好好想想),呢样我们就可以少一半的循环了。
有的宝贝突然恍然大悟,哈哈哈呢我们再想想是不是还可以让它更简单
没想到的话,也没关系!我说一下,100~200之间的偶数一定不是素数,对吧!我们把它们剔除不就可以了!嘿嘿嘿
让我们看看怎么执行这个程序吧!
//思路
//判断 i 是不是素数
//试除法
#include<stdio.h>
#include<math.h>//由于引用了sqrt开平方数学符号,所以引用头文件
int main()
{
int i;//定义一个要判断的数
int j;
int count=0;
for(i=101;i<=200;i+=2)//剔除偶数
{
j=0;
for(j=2;j<=sqrt(i);j++)//让它小于i的开平方
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
count++;
printf("%d\n",i);
}
}
printf("count=%d\n",count);
return 0;
}
如果明白,就关注我吧!嘿嘿