鱼C论坛

 找回密码
 立即注册
查看: 3161|回复: 3

c语言367+186第150个素数

[复制链接]
发表于 2019-3-14 11:03:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 古道鸦 于 2019-3-14 11:20 编辑
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main()
  4. {
  5.         int range=0;
  6.         int number;
  7.         int i;
  8.         while(range<150)
  9.         {
  10.                 for(number=367;number;number+=186)
  11.                 {
  12.                         for(i=2;i<number;i++)
  13.                         {
  14.                                 if(number%i==0)
  15.                                 {
  16.                                         break;
  17.                                 }
  18.                                 if(number==i)
  19.                                 range++;
  20.                         }
  21.                 }
  22.         }
  23.         printf("%d",number);
  24. }
复制代码


大佬,目的是为了求367不断+186结果中的第150个素数,想知道哪里错了,不输出结果

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-3-14 11:30:03 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>

  4. main(void)
  5. {
  6.         int i , number , d , range              ;
  7.         bool f                                  ;

  8.         for(range = 0 , number = 367 ; range < 150 ; number += 186) {
  9.                 f = true                        ;
  10.                 d = (int) sqrt(number) + 1      ;
  11.                 for(i = 2 ; i < d ; i ++) {
  12.                         if(! (number % i)) {
  13.                                 f = false       ;
  14.                                 break           ;
  15.                         }
  16.                 }
  17.                 if(f) range ++                  ;
  18.         }
  19.         printf("%d\n" , number)                 ;
  20. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-14 19:26:59 | 显示全部楼层
代码参考,不对的自己修改下
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void main()
  4. {
  5.         int range, number, i, flag;

  6.                 range = 0;
  7.                 number = 367;

  8.         while(1)
  9.         {
  10.                         number += 186;
  11.                         flag = 1; // 先假定是素数
  12.             for(i=2;i<number;i++)
  13.             {
  14.                     if(number%i==0)
  15.                     {
  16.                                                 flag = 0;
  17.                         break;
  18.                     }
  19.             }

  20.                         if(flag)
  21.                         {
  22.                                 range++;

  23.                                 // 第150个素数退出
  24.                                 if(range==150)
  25.                                 {
  26.                                         break;
  27.                                 }
  28.                         }

  29.         }
  30.         printf("%d \n",number);
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-15 01:07:33 From FishC Mobile | 显示全部楼层
内层for循环里面的第一个if语句 break 把后面的range++拦住了 死循环了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-17 12:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表