qq_45519167 2021-07-17 20:49 采纳率: 100%
浏览 62
已采纳

请问……请问……请问标题要怎么打?

//代码如下:

#include<stdio.h>
main()
{
    int n,p,i,m;
    while(n<1000)
    {
        i=2;
        p=1;
        n=n+1;
        m=n/2;
        while(i<=m)
            {
                p=p*(n%i);
                i=i+1;
            }
            if (p!=0)
            {
                printf("%d是一个质数\n",n);
            }
    }
    return 0;
}

结果如下:

img
请问为什么打印到181就终止了?

  • 写回答

1条回答 默认 最新

  • 关注

    因为p多次相乘会因为数值太大,会超出int整数范围的。所以应该用if判断n%i==0就不是素数,可以直接跳出循环。
    改成这样,代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

    #include<stdio.h>
    main()
    {
        int n=0,p,i,m;
        while(n<1000)
        {
            i=2;
            p=1;
            n=n+1;
            m=n/2;
            while(i<=m)
                {
                    if(n%i==0){
                        p=0;
                        break;
                    }
                    i=i+1;
                }
                if (p!=0)
                {
                    printf("%d是一个质数\n",n);
                }
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 7月18日
  • 创建了问题 7月17日

悬赏问题

  • ¥15 有没有可以帮我搞一个微信建群链接,包括群名称和群资料群头像那种,不会让你白忙
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题