xirongzz 2021-11-02 15:00 采纳率: 100%
浏览 31
已结题

用c语言求输入区间内的所有素数,为什么内层循环要用j<=sqrt(i)才能成功,用j<=i不可以。


#include<stdio.h>
#include<math.h>
int main()

{
    printf("输入一个范围 (x,y)");
    int x, y;
    
    int num = 0;
    do
    {
        scanf("%d %d", &x, &y);
    } while (x>=y||x<=1||y<=1);
    for (int i=x; i <= y; i++)
    {
        int j;
        int q = 1;
        _**for (j = 2; j <= sqrt(i); j++)_**_
        {
            if (i % j == 0)
            {
                q = 0;
                break;
            }
        }
        if (q == 1)
        {
            printf("%d\t", i);
            num++;
            if (num % 6 == 0)
                printf("\n");
        }
            

        
    }
    printf("\n");
        printf("区间内共有%d个素数", num);

    return 0;

}

这个是能成功的

  • 写回答

3条回答 默认 最新

  • aabyte 2021-11-02 15:07
    关注

    搞清楚判断素数的逻辑是什么,除了1和本身不能被别的整数整除,你把终止条件取到i已经破坏了这个逻辑,你最多可以取到i-1,但实际上通过数学知识不难证明取到sqrt(i)就可以了

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

报告相同问题?

问题事件

  • 系统已结题 11月13日
  • 已采纳回答 11月5日
  • 创建了问题 11月2日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟