「已注销」 2022-01-28 10:09 采纳率: 83.3%
浏览 161
已结题

c语言找区间的素数,简单运用

输出[a,b]区间内所有素数,输出格式为10个素数一行,素数间以一个空格分隔。请设计函数void prime(int a,int b)完成上述功能。

主函数中输入若干整数对,表示有若干组数据,每组数据先输出区间,再输出区间内所有素数,每组输出间有一个空行。

输入样例:
2 500 100 300 1000 2000 100 500 100 200
输出样例:
[2,500]
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499

[100,300]
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199 211 223 227 229 233 239 241 251 257
263 269 271 277 281 283 293

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-01-28 11:18
    关注

    供参考:

    #include <stdio.h>
    int IsPrime(int n)
    {
        int i;
        if (n <= 3) return n > 1;
        for (i = 2; i * i <= n; i++)
            if (n % i == 0) return 0;
        return 1;
    }
    void prime(int a, int b)
    {
        int i, flg;
        printf("[%d,%d]\n", a, b);
        for (i = a, flg = 0; i <= b; i++)
        {
            if (IsPrime(i))
            {
                flg++;
                printf(flg % 10 == 0 ? " %d\n" : flg % 10 == 1 ? "%d" : " %d", i);
            }
        }
        if (flg % 10 != 0)
            printf("\n");
        printf("\n");
    }
    int main()
    {
        int a, b;
        while (scanf("%d%d", &a, &b) == 2 && a != 0 && b != 0) { //a b 输入: 0 0 结束
            prime(a, b);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 这个公式写进SIMULINK中的function模块的代码中应该是什么样的
  • ¥15 javaweb登陆的网页为什么不能正确连接查询数据库
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程
  • ¥15 layui数据表格多次重载的数据覆盖问题
  • ¥15 python点云生成mesh精度不够怎么办