求助!如何修改这段代码?

题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)[a,b](5≤a<b≤100,000,000)( 一亿)间的所有回文质数。
输入输出样例
输入
5 500
输出
5
7
11
101
131
151
181
191
313
353
373
383
 

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int num=0,sq,x,flag=0;
    long long int a,b,i;
    cin>>a>>b;
    for(i=a;i<=b;i++){
    sq=sqrt(i);
    for(int j=2;j<=sq;j++){
        if(i%j==0){
            flag=1;
            break;
            }
    }
            while((!flag)&&i){
                num=num*10+x;
                x=i%10;
                i/=10;
            }
                if(num=i)
                cout<<num<<endl;
        }
    return 0;

 

第二点:判断等于用两个=,一个=是赋值符号。在最后判断的时候,应该改成 if (num == i)。有问题可以私信我。

修改的目的是什么?

有以下两点需要修改:

第一点:while循环里直接改变了i的值,应该用一个备份变量,从而不影响后续for循环。