|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- int main()
- {
- int i,num,sum=0;
- _Bool flag=1;
- for(num=3;num<=10000;num++)
- {
- printf("n=%2d",num);
- for(i=2;i<=num/2;i++)
- {
- printf("i=%2d",i);
- if(num%i==0)
- {
- flag=0;
- break;
- }
- printf("flag=%d",flag);
- }
- if(flag)
- {
- sum++;
- }
-
- }
- printf("10000以内共有%d个素数",sum);
- }
复制代码
我将每个循环的num,i和flag的值打印出来检查,我虽然打了i++,但是每个i都是2,完全没有变过,而且num=3的情况i也没有打印出i,我想问问各位大佬这个循环出了什么问题?
楼主试试这个代码
- #include<stdio.h>
- int main()
- {
- int i,num,sum=0 ;
- int flag=1 ;
- for(sum =0 , num = 3 ; num <= 10000 ; num ++){
- for(flag = 1 , i = 2 ; i <= num /2 ; i ++) {
- if(num % i == 0) {
- flag = 0 ;
- break ;
- }
- }
- if(flag) sum ++ ;
- }
- printf("10000以内共有%d个素数",sum);
- }
复制代码
编译、运行实况:
- D:\00.Excise\C>g++ -o x x.c
- D:\00.Excise\C>x
- 10000以内共有1228个素数
- D:\00.Excise\C>
复制代码
这是我修改的你的代码
|
|