|
1鱼币
这有两个问题:
1.求10000内素数的个数,我的代码是这样的:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- bool flag = 1;
- int i , j ;
- int num = 3;
-
- for (i = 5; i < 10000; i++)
- {
- for (j = 2; j < sqrt(i); j++ ){
- if(i % j == 0){
- flag = 0;
- break;
- }
- if (flag == 1){
- num++;
- flag = 0;
- }
- }
- }
-
- printf("10000以内共有%d个素数!",num);
-
- return 0;
- }
复制代码
本帖最后由 SHRS23 于 2020-7-27 22:20 编辑
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- int main()
- {
- int flag = 1;
- int i, j ;
- int num = 0;
- for(i = 2; i < 10000; i++)
- {
- flag = 1; //假设i是质数
- for(j = 2; j <= sqrt(i); j++)//注意<改成了<=
- {
- if(i % j == 0)//如果条件成立说明假设错误,进行下一个i的判断
- {
- flag = 0;
- break;
- }
- }
- if(flag == 1)//经过试除判断后任然是质数,说明i确实是质数
- {
- num++;
- flag = 0;
- }
- }
- printf("10000以内共有%d个素数!", num);
- system("pause");
- return 0;
- }
复制代码
第一个题目
我的环境不支持bool型变量所以改成了int
修改的地方都在注释里,你原本的判断逻辑出了点问题
还有1不是质数
|
最佳答案
查看完整内容
第一个题目
我的环境不支持bool型变量所以改成了int
修改的地方都在注释里,你原本的判断逻辑出了点问题
还有1不是质数
|