鱼C论坛

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

c语言367+186第150个素数

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

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

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

x
本帖最后由 古道鸦 于 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个素数,想知道哪里错了,不输出结果

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)                 ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-15 01:07:33 From FishC Mobile | 显示全部楼层
内层for循环里面的第一个if语句 break 把后面的range++拦住了 死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 12:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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