求出从i开始连续n个素数并求出相邻n-1对素数的最大差值

问题

求出从i开始连续n个素数并求出相邻n-1对素数的最大差值。(不可以使用数组)
比如输入 10 8
输出 11 13 17 19 23 29 31 37 最大差值:6

我的解答思路和尝试过的方法

我已经试着写出了从i开始连续n个素数,但是不会求相邻n-1对素数的最大差值

#include <iostream>
using namespace std;
int main() {
int i,n;
cout<<"请输入起点和从起点开始找到几个素数:";
cin>>i>>n;
    for(int x=i,con=0;con<n;x++){
bool flag=1;
        for(int q=2;q<=x/2;q++){
            if(x%q==0){flag = false;break;}
        }if(flag) {con++;cout<<x;}
    }
}

我想要达到的结果

求问怎么求相邻n-1对素数的最大差值哇~万分感谢!

运行结果如下:

img

代码:

#include <iostream>
using namespace std;

//判断素数
int prime(int n)
{
    if(n<2) return 0;
    for(int i = 2;i<n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}


int main() 
{
    int i,n;
    cout<<"请输入起点和从起点开始找到几个素数:";
    cin>>i>>n;
    int count = 0;
    int maxchazhi = 0; //最大差值
    int preprime; //记录上一个素数
    for (;;i++)
    {
        if(prime(i))
        {
            cout << i << " ";
            count++;
            if(count == 1)
            {
                preprime = i;
                continue;
            }
            if(count >=2)
            {
                if(i - preprime > maxchazhi)
                {
                    maxchazhi = i - preprime;
                }
                preprime = i;
            }

            if(count == n)
                break;
        }
    }
    cout << "最大差值:"<< maxchazhi;
    return 0;
}


你的代码修改如下

#include <iostream>
using namespace std;
int main()
{
    int i, n, up, max=0;
    cout << "请输入起点和从起点开始找到几个素数:";
    cin >> i >> n;
    for (int x = i, con = 0; con < n; x++)
    {
        bool flag = 1;
        for (int q = 2; q <= x / 2; q++){
            if (x % q == 0) {flag = false; break; }
        }
        if (flag) {
            con++;
            cout << x << " ";
            if (con>1 && x-up>max)
                max = x-up;
            up = x;
        }
    }
    cout << endl;
    cout << "最大差值:" << max << endl;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

定义一个临时变量用来保存当前最大差值。
遍历n个素数,素数之间的差值与临时变量进行比较,如果大于临时变量,则更新临时变量的值。