S1E15用sqrt()求素数
#include <stdio.h>#include <math.h>
int main() {
int i, j;
int flag;
int num = 1;
for (i = 2; i < 10000; i++) {
flag = 0;
for (j = 2; j < sqrt(i); j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (!flag) {
num++;
}
}
printf("%d",num);
return 0;
}
与正确结果差了几个值,不知道哪里不对{:10_262:} 本帖最后由 肖-肖 于 2021-6-8 21:45 编辑
第10行中for循环的条件改为:j <= sqrt(i)试一试吧
比如你要判断5是不是素数
总不能连2都不除吧~
肖-肖 发表于 2021-6-8 21:43
第10行中for循环的条件改为:j
可是sqrt()返回的不是double类型,那2<√5肯定会除的啊 本帖最后由 肖-肖 于 2021-6-8 22:38 编辑
C++太极门小弟子 发表于 2021-6-8 22:14
可是sqrt()返回的不是double类型,那2
举错例子了,比如是9
那么3就不会除了吧
因为3<3-->false
我电脑没电了~~关机了马上 肖-肖 发表于 2021-6-8 22:37
举错例子了,比如是9
那么3就不会除了吧
因为3false
{:10_275:}好了 C++太极门小弟子 发表于 2021-6-8 22:43
好了
嗯 如果解决了的话 给个最佳答案吧 ~ 因为2和3的算术平方根比2本身都小,
所以无法用"被2到自己的算术平方根之间的一切整数除"来判定
但是2和3是质数,故需要在计算前预先算上,即总个数初始值定为2,然后操作数从4开始算
页:
[1]