1 条题解

  • 0
    @ 2025-8-24 21:07:38

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar lujunyu
    新蒟蒻一枚

    搬运于2025-08-24 21:07:37,当前版本为作者最后更新于2021-07-13 16:22:31,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    思路

    由题可知,素数回文数既是一个素数,也是一个回文数。所以可以定义两个函数来判断是否符合素数回文数的两个条件。

    方法

    判断素数

    使用循环让这个数对 22 至这个数减去一的每一个数进行取模,如果都没有取模尽,说明这个数是一个素数。

    判断回文数

    先定义两个数组。用循环将数的每一位分解出来放入第一个数组,再将第一个数组倒过来装进第二个数组。最后判断第一个数组与第二个数组是否完全相等即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    bool ss(int x)//判断素数
    {
    	for(int i=2;i<=x-1;i++)
    		if(x%i==0)
    			return false;
    	return true;			
    }
    bool hw(int x)//判断回文数
    {
    	int t=0,m=0,a[15],b[15];
    	while(x!=0)
    	{
    		t++;
    		a[t]=x%10;
    		x/=10;
    	}
    	for(int i=t;i>=1;i--)
    	{
    		m++;
    		b[m]=a[i];
    	}
    	for(int i=1;i<=t;i++)
    		if(a[i]!=b[i])
    			return false;
    	return true;		
    }
    int main()
    {
    	int n,ans=0;
    	cin>>n;
    	for(int i=11;i<=n;i++)
    		if(hw(i)&&ss(i))//如果两个条件均符合,计数器就加一
    			ans++;
    	cout<<ans;
    	return 0;		
    }
    • 1

    信息

    ID
    6993
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    1
    已通过
    1
    上传者