不定灰
2021-03-21 01:44
采纳率: 100%
浏览 35

C语言求助,求N以内素数,为什么结果会出现是3的倍数但不是6的倍数的数

为什么结果会出现9、15这种是3的倍数但不是6的倍数的数,求助!!

#include <stdio.h>
int main(void) {
    int i,j,N;
    printf("输入:"); 
    scanf("%d",&N);
    if(N==2)
    {
        printf("2");
    }
    else if(N>2)
    printf("2\n");
    for(i=3;i<=N;i++)
    {
        for(j=2;j<=i;j++)
        {
            if(i%j==0)
            break;
            else printf("%d\n",i);
            break;
        }
    }
    return 0;
}

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • Basesson 2021-03-21 08:51
    已采纳

    问题在for(j=2;j<=i;j++)里

    举几个例子:

    i=4  >>>  i%2=0  >>>  break

    i=5  >>>  i%2=1  >>>  printf("%d\n",i)  >>>  break

    i=6  >>>  i%2=0  >>>  break

    i=7  >>>  i%2=1  >>>  printf("%d\n",i)  >>>  break

    可以看出for(j=2;j<=i;j++)几乎没有起作用,只判断了能否被2整除,就是如果能被2整除就退出循环,如果不能被2整除输出i再退出循环,没有判断不能被2整除后之后的3,4,5,6能不能整除。

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题