Bronyaer 2022-11-25 16:31 采纳率: 60%
浏览 9
已结题

等差素数数列问题,还请各位帮我看一下

蓝桥杯素数等差数列问题。下面是题目。

2,3,5,7,11,13,是素数序列。
类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。
上边的数列公差为30,长度为6。
2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。
这是数论领域一项惊人的成果!
有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:
长度为10的等差素数列,其公差最小值是多少?

个人的解题思路是创造一个数组a[10],然后令a[0]是素数,按照公差d得出数组其他数字,依次检查是否每个都是素数。直到每个都是素数,输出公差d。

还请求各位指正;

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

int main(int argc, char *argv[]) 
{
    int f(int x);
    int i,j;
    int a[10],d,final;
    for(i=3; i<1000; i++) 
    {
        if(f(i)) 
        {
            a[0]=i;
            for(d=1000; d>1; d--) 
            {
                for(j=1; j<10; j++) 
                {
                    a[j]=a[0]+j*d;
                    if(f(a[j])) 
                    {
                        final=d;
                    } 
                    else 
                    {
                        break;
                    }
                }
            }
        }
    }
    printf("%d",final);
    return 0;
}
int f(int x) 
{
    int judge;
    int k;
    for(k=2; k<x; k++) 
    {
        int judge=0;
        if(x%k==0) 
        {
            judge =0;
            return 0;
            break;
        } 
        else 
        {
            judge++;
        }
    }
    if(judge)
        return x;
}
  • 写回答

1条回答 默认 最新

  • 於黾 2022-11-25 16:40
    关注

    1.你为什么让d从1000往下循环,要是公差1000以内没有解,那你的代码就解不出来了
    同理,你凭什么认为a[0]一定小于1000呢
    你应该用while循环而不是for循环
    既然数学上证明了一定有解,那就不用怕死循环,反正找到了解就break
    2.你没必要真的把数都存进数组a里面,你只要判断a[0]和a[0]+j*d都是质数就行了
    3.你break条件不对,你只判断内层循环是合数的时候就break,说明不是解。都是质数的时候你没管,还继续循环,那不把解丢了吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 已采纳回答 12月7日
  • 修改了问题 11月25日
  • 创建了问题 11月25日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么