lun1ght 2024-02-23 03:15 采纳率: 75%
浏览 7
已结题

变量i一进入内循环for就一直等于2

求问用筛选法求100以内的素数里,i进入了if(i==j)后还是等于素数的,但是再往下进入内循环for后就一直等于2是为什么

img

img

  • 写回答

3条回答 默认 最新

  • a5156520 2024-02-23 11:44
    关注

    确实是因为没有重置b的值导致进入不了循环。

    #include <stdio.h>
    
    int main(void){
        
        int a[101],i,j,k,b;
        
        for(i=1;i<101;i++){
            a[i]=i;
        }
        a[1]=0;
        
        for(i=2;i<101;i++){
            
            for(j=2;j<=i;j++){
                if(i%j==0){
                    break;
                }
            }
        //    printf("after for i=%d\n",i);
            
            if(i==j){
            //    printf("i=%d,",i);
                b=2*i;
                //printf("i=%d,b=%d\n",i,b);
                for(k=2;b<=100;k++){
                    //printf("i=%d,b=%d\n",i,b);
                    printf("%d ",i);         
                    a[b]=0;
                    b=k*i;
                }    
            }
            
        }
        
        for(i=2;i<=100;i++){
            if(a[i]!=0){
                printf("%d ",a[i]);
            }
        }
        
        return 0;    
        
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月19日
  • 已采纳回答 3月14日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 晶体塑性有限元——Damask求解
  • ¥15 写出这个有没有人能写一下今天中午就要
  • ¥30 设计一个图形用户界面来控制你机械臂的运动
  • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
  • ¥15 RPG游戏架构设计和开发方法
  • ¥15 前端返回pdf时不显示内容
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变