m0_66394588 2022-04-21 20:32 采纳率: 91.5%
浏览 27
已结题

我这一串代码应该怎么修改呢(打印出1000-3000内的所有素数,每五个一行)

#include<stdio.h>
#include<math.h>

int main()
{
    int i,j,k=0,q;
    
    for(i=1000;i<=3000;i++)
    {
        q=sqrt(i);
        for(j=2;j<=q;j++)
        {
            if(i%j==0)
            {
                break;
            }
        }
        if(j>q)
        {
            printf("%d",i);
            k++;
            if(k%5==0)printf("\n");
        }
        else break;
    }
} 

  • 写回答

3条回答 默认 最新

  • 全栈小5 全栈领域优质创作者 2022-04-21 22:28
    关注

    1、效果如下

    img

    2、详细代码解释如下

    
    /*
    1)打印出1000-3000内的所有素数
    2)每五个一行
    3)素数:一般指质数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数
    */
    
    #include<stdio.h>
    #include<math.h>
     
    int main()
    {
        int i,j,k=0,q;
        
        for(i=1000;i<=3000;i++)
        {
            //算术平方根,sqrt(9)=3
            //目的是获取到最大得自然数范围
            //比如:81=9*9,所以可以通过算术平方根来获取最大得自然数范围
            q=sqrt(i); 
            
            //遍历范围内的自然数,是否有被整数的
            //有,则表示不是质数,继续下一个循环
            for(j=2;j<=q;j++)
            {
                if(i%j==0)
                {
                    break;
                }
            }
            
            //如果j>q说明已经遍历完,则说明是质数
            //如果有被整数是会提前结束,则说明不是质数
            if(j>q)
            {
                printf("%d\t",i); //输出质数,并加一个空格隔开
                k++;
                if(k%5==0){
                    //5个换行
                    printf("\n");
                }
            }
            //else break  //当存在一个不是质数时,就结束了循环,直接跳出循环了
        }
    } 
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)