古道鸦 发表于 2019-3-14 11:03:20

c语言367+186第150个素数

本帖最后由 古道鸦 于 2019-3-14 11:20 编辑

#include<stdio.h>
#include<stdlib.h>
void main()
{
        int range=0;
        int number;
        int i;
        while(range<150)
        {
                for(number=367;number;number+=186)
                {
                        for(i=2;i<number;i++)
                        {
                                if(number%i==0)
                                {
                                        break;
                                }
                                if(number==i)
                                range++;
                        }
                }
        }
        printf("%d",number);
}

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

jackz007 发表于 2019-3-14 11:30:03

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

main(void)
{
      int i , number , d , range            ;
      bool f                                  ;

      for(range = 0 , number = 367 ; range < 150 ; number += 186) {
                f = true                        ;
                d = (int) sqrt(number) + 1      ;
                for(i = 2 ; i < d ; i ++) {
                        if(! (number % i)) {
                              f = false       ;
                              break         ;
                        }
                }
                if(f) range ++                  ;
      }
      printf("%d\n" , number)               ;
}

ba21 发表于 2019-3-14 19:26:59

代码参考,不对的自己修改下
#include<stdio.h>
#include<stdlib.h>
void main()
{
      int range, number, i, flag;

                range = 0;
                number = 367;

      while(1)
      {
                        number += 186;
                        flag = 1; // 先假定是素数
            for(i=2;i<number;i++)
            {
                  if(number%i==0)
                  {
                                                flag = 0;
                        break;
                  }
            }

                        if(flag)
                        {
                                range++;

                                // 第150个素数退出
                                if(range==150)
                                {
                                        break;
                                }
                        }

      }
      printf("%d \n",number);
}

82457097 发表于 2019-3-15 01:07:33

内层for循环里面的第一个if语句 break 把后面的range++拦住了 死循环了
页: [1]
查看完整版本: c语言367+186第150个素数