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日