101到200的质数
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。
我们设定一个数为x,根据质数的定义判断x是否为质数,我们看它能否被2、3、4······、x-1整除,如果它不能被其中任何一个整数整除,则这个数就是质数。
思路就是 先判断一个数是不是质数,再去拓展。
先说一下错误写法
bool find(int n) { for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return false; } return true; }
这种是错误的,可能会出现bug
bool find(int n) { int sql=(int)sqrt(1.0*n); for(int i=2;i<=sql;i++) { if(n%i==0) return false; } return true; }
这种写法是正确的,可以判断一个数是不是质数
完整的程序就是
#include<iostream> #include<math.h> using namespace std; int main() {//如果整数x为质数,那么就不可能写成 x = a * b的形式。所以如果整数x无法被小于等于x的平方根的质数整除,则x为质数。 bool flag = true; int count = 0;//这定义的是质数的量 for (int i = 101; i <= 200; i++) { for (int j = 2; j <= sqrt(i); j++)//sqrt()用来求指定数的平方根,例如我们要判断一个数是不是质数,只需要判断 2 ~ n开根号 之间有没有可以整除的数就可以了 {//这里是j从2开始,一直找,其实也就是j*j<=i,用元素平方去排查 if (i % j == 0)//找到了 { flag = false; break;//跳出循环 } } if (flag) { count++;//找到后count就会+1 cout << " " << i << " ";//输出这个质数 } flag = true; } cout << " " << "总数为:" << count; system("pause"); return 0; }