首先什么是素数
除了一和本身不能被整除的数
1..这是第一种思想 这种思想是让系统从2到i-1一个一个判断
找出能被整除,且整除的是自己本身的数
#includeint main() { int i = 0; int count = 0; for ( i = 100; i <= 200; i++ ) { //判断i是否为素数 //从2到i-1之间的数一个一个试 int y = 0; for ( y = 2 ; y <= i-1 ; y++) { if (i % y == 0) { break; } } if (i == y) { count++; printf("%d n", i); } } printf("%d n", count); return 0; } } 2.下面方法直接假定该数是素数
#inclludeint main() { int i = 0; int count = 0; for (i = 100; i <= 200; i++) { int y = 0; int flag = 1;//定义一个flag for (y = 2; y <= i - 1; y++) { if (i % y == 0) { flag = 0; //不是素数 break; } } if (flag == 1) { count++; printf("%d n", i); } } printf("%d n", count); return 0; } 以下是代码截图
那么还能不能在简化呢?
答案是肯定的
#include#include int main() { //如果 m=a*b //a和b中至少有一个数字是 <= 开平方的 //16=2*8 16开平方等于4 //所以从2,一直到y的开平方就好了 int i = 0; int count = 0; for (i = 101; i <= 200; i+=2)//优化点:素数不可能是偶数 { int y = 0; int flag = 1; for (y = 2; y <= sqrt(i); y++) { if (i % y == 0) { flag = 0; break; } } if (flag == 1) { count++; printf("%d n", i); } } printf("%d n", count); return 0; }



