标题:如何解决?
只看楼主
btn
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-1-30
结帖率:50%
已结贴  问题点数:10 回复次数:1 
如何解决?
题目描述
因为 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
[code][/co#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;
}de]
搜索更多相关主题的帖子: 质数 num 回文 flag int 
2021-01-31 13:31
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
连C语言都在上个世纪末,不再将变量一股脑定义到函数头部了。实在不明白这个恶习是谁传授的?

以下代码是根据你原来的算法修改而来,算法未变
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    unsigned a, b;
    cin >> a >> b;

    for( unsigned i=a; i<=b; ++i )
    {
        bool flag = true;
        for( unsigned j=2; flag && j*j<=i; ++j )
            flag = i%j!=0;

        if( flag )
        {
            unsigned num = 0;
            for( unsigned x=i; x!=0; x/=10 )
                num = num*10 + x%10;

            if( num == i )
                cout << i << endl;
        }
    }
}
2021-02-01 08:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504787-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073125 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved