| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
源代码(原代码) 
 
#include<stdio.h> 
 
int main() 
{ 
        int i = 2; 
        int j,math; 
        bool flag = 1;//强调布尔类型为flag  
        for (math = 5;math<10000;math++) 
        { 
                for(j = 2;j < math / 2;j++) 
                { 
                        if(math%j == 0) 
                        { 
                                //i++ 
                                flag = 0; 
                                break; 
                        } 
                         
                } 
                if (flag != 0) 
                { 
                        i++; 
                } 
                else 
                { 
                        flag = 1; 
                } 
        } 
        printf("10000以内共有%d个素数!\n",i); 
         
        return 0; 
                 
 } 
 本帖最后由 jackz007 于 2021-12-24 18:28 编辑 
- #include<stdio.h>
 
  
- int main()
 
 - {
 
 -         int i = 2;
 
 -         int j,math;
 
 -         bool flag = 1
 
 -         for (math = 5;math<10000;math++)
 
 -         {
 
 -                 for(j = 2 ; j < math / 2 ; j ++)  // 这个循环是在 2 ~ math / 2 - 1 的范围内寻找 math 可能的因子,如果找到,那就说明当前 math 不是一个素数 
 
 -                 {                                 // 进入循环的时候,flag = 1,预先假定 math 是一个素数,如果经此循环未能找出因子,那么假设成立,flag = 1,否则不成立,flag = 0。
 
 -                         if(math % j == 0)
 
 -                         {
 
 -                                 flag = 0 ;        // 找到了一个因子,置 flag 为 0 值,供循环外判断素数使用
 
 -                                 break    ;        // 循环的目的就是寻找 math 的因子,既然找到了,目的也就达到了,退出循环
 
 -                         }
 
 -                        
 
 -                 }
 
 -                 if (flag != 0)                    // 根据 flag 的数值判断 math 是否是素数,flag != 0,意味着 math 是一个素数
 
 -                 {
 
 -                         i++ ;                     // 素数计数器加 1
 
 -                 }
 
 -                 else                              // 否则,flag == 0,为了下一次循环,需要在这里把 flag 重新初始化为 1
 
 -                 {
 
 -                         flag = 1;
 
 -                 }
 
 -         }
 
 -         printf("10000以内共有%d个素数!\n",i);
 
 -        
 
 -         return 0;
 
 -                
 
 - }
 
  复制代码
         既然定义 flag 为 bool 型变量,那么,为其赋值应该用 true 和 false,不要赋 0 和 1,如果要赋 0 和 1,那就最好把 flag 定义为 int 型。  
 
 
 |   
- 
注释掉else程序块后结果不是1229,而是3 
 
 
 
 
 
 
 
 |