首页 > 其他分享 >回文素数

回文素数

时间:2023-05-09 20:35:28浏览次数:28  
标签:判断 int 整数 素数 && 回文

1.问题描述

回文素数指的是一个整数n从左到右和从右到左读其数值都相同且n为素数,则称整数n为回文素数。

求出所有不超过1000的回文素数。

2.问题分析

判断素数就不说了,一会做个函数判断就行

求回文数,我用的是穷举法,判断一千以内所有整数,如果是回文数,再去判断是不是素数,如果都符合,就打印输出。

3.算法设计

因为是一千以内的数,我们先把这个数拆分,三重循环,遍历一千以内的整数,就是这样

for (i = 0; i <= 9; i++)
        for (j = 0; j <= 9; j++)
            for (k = 0; k <= 9; k++)
            {
                n = i * 100 + j * 10 + k;
                m = k * 100 + j * 10 + i;
}

还要进行一个判断,因为这个数可能有一个位置为0,下面这个就是前两位为0

if (i == 0 && j == 0)
                {
                    m = m / 100;
                }

这个是第一位为0

else if (i == 0)
                {
                    m = m / 100;
                }

4.程序

#include<iostream>
using namespace std;
int fun(int n)//这个就是判断n是不是为素数
{
    int i;
    for (i = 2; i < (n - 1) / 2; ++i)
    {
        if (n % i == 0)
            return 0;
    }
        return 1;//如果符合条件,就返回1
}
int main()
{
    int i, j, k, n, m;//这里的m是n的顺序相反的数
    for (i = 0; i <= 9; ++i)//穷举第一位
        for (j = 0; j <= 9; ++j)//穷举第二位
            for (k = 0; k <= 9; ++k)//三重循环,穷举第三位
            {
                n = i * 100 + j * 10 + k;//计算出三位数
                m = k * 100 + j * 10 + i;//这是顺序相反的数
                if (i == 0 && j == 0)//判断前两位为0的情况
                {
                    m = m / 100;
                }
                else if (i == 0)//判断第一位为0的情况
                {
                    m = m / 100;
                }
                if (n > 10 && n == m && fun(n))//判断n如果大于10,n和顺序相反的m相同,而且n也是个素数
                {
                    cout << n << endl;
                }
            }
    return 0;
}

 

标签:判断,int,整数,素数,&&,回文
From: https://www.cnblogs.com/lllyclh/p/17386152.html

相关文章

  • 回文数
    一、问题描述: 二、设计思路:   三、程序流程图:    四、代码实现......
  • LeetCode 516. 最长回文子序列
    classSolution{public:intf[1010][1010];//f[i][j]表示s[i~j]之间的最长序列intINF=0x3f3f3f3f;intlongestPalindromeSubseq(strings){intn=s.size();s=''+s;for(intlen=1;len<=n;len++)for(inti=1;i......
  • [Leetcode] 0680. 验证回文串 II
    680.验证回文串II点击上方标题跳转至leetcode题目描述给你一个字符串 s,最多可以从中删除一个字符。请你判断s是否能成为回文字符串:如果能,返回true;否则,返回false。 示例1:输入:s="aba"输出:true示例2:输入:s="abca"输出:true解释:你可以删除字符'c'。示......
  • RSA(共模、低指数、素数分解、模不互质)
    buuctf:rsa3题目c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084......
  • 天梯赛L1-028 判断素数
    一、问题描述本题的目标很简单,就是判断一个给定的正整数是否素数。输入格式:输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。输出格式:对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。输入样例:211111 输出样例:Yes......
  • 剑指 Offer II 020. 回文子字符串的个数
    题目链接:剑指OfferII020.回文子字符串的个数方法一:动态规划解题思路状态表示:\(dp[i][j]\)表示子字符串\(s[i,j]\)是否为回文串;状态计算:若\(s[i]\)!=\(s[j]\),显然不是;若\(s[i]\)==\(s[j]\),有以下几种可能:\(i\)==\(j\),只有一个字符,是回文串;\(i\)+\(1\)......
  • 7-002-(LeetCode- 5) 最长回文子串
    1.题目读题 考查点 2.解法思路 代码逻辑 具体实现113.总结......
  • 求素数思路
    “求素数”一类的题多用筛选法。其具体算法如下:从2开始把连续的整数放入筛中,首先确定筛中第一个数2是素数。并从筛中晒去所有2的倍数(不包括2);然后从2以后开始查找,找到筛中剩下的第一个数,它也是素数,并从筛中筛去它的所有倍数(不包括本身)。如此反复执行,直到无数可筛为止。这时筛中剩......
  • day 57 代码思想录 647. 回文子串 |
    给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例1:输入:"abc"输出:3解释:三个回文子串:"a","b","c"示例2:输入:"aaa"输出:6解释:6个回文子串:"a","a","a","aa&......
  • 每日一题-合并回文子串
    合并回文子串由于n比较小,我们可以区间dp\(f[i][j][a][b]\)表示s[i,j]和t[a,b]能否一起构成回文子串。\(g[i][j],h[i][j]\)分别表示s[i,j],t[i,j]能否构成回文字串。g,h直接暴力求即可。注意判断边界条件,也就是i=j和a=b的情况#include<cstdio>#include<algorithm>#include<c......