判断回文素数

回文素数:俩个方面一个是判断是不是回文数,

     另一个是判断是不是素数。

来一个一个解决。

回文数:顾名思义,就是关于中心对称。我们现在有一个简单的方法,就是根据回文数的特性,就是从前面算和从后边算都是可以算出同一个数的。

我们还需要知道一个数x,这个数(x%10)得到的是x的最后面的数大小。这个数(x/10)得到的是除了最后一位前面的数。

#include<iostream>
using namespace std;

int huiwen(int n){
    int a,b;
    int x=0;
    a=n;
    while(a>0)
    {
        x=a%10+x*10;  //这里算的是什么?是从个位数开始算,然后加起来。把后边的数作为前面的数来算
        a=a/10;   //这里算什么?算除了最后那位前面的那几位,目的是让上面的那个式子可以算起来

    }
    if(n==x)
    {
        return 1;
    }
    else
    {
        return 0;
    }


}
int sushu(int n){
    int x=n;
    for(int i=2;i<n;i++)
    {
        if(x%i==0)
            return 0;
        
    }
    return 1;

}
int main(){
   
    int a,b;
    cin>>a>>b;
    int n=0;
    for(int i=a;i<b;i++)
    {
        if(huiwen(i)&&sushu(i))
        {
            n++;
            cout<<i<<"是回文素数"<<endl;
        }
    }
    cout<<"一共有"<<n<<""<<endl;


    return 0;
}

这里还要注意俩个点:

  1、这里的判断回文数的:

    x=x*10+a%10;就是判断是否是回文数的这个数的末尾作为前面的来算。

    a=a/10;   得到刚刚用过的最后得数来算前面剩下的啥样。

  2、判断素数的:int sushu(int n){

    int x=n;        1.注意这里需要有一个数来接n,因为在for循环里如果不接的话,n是一直在变化的,不可以
    for(int i=2;i<n;i++)
    {
        if(x%i==0)
            return 0;2.还有这里,下面的return 1;是在for循环之外,为什么在外面是因为,如果你是else{return 1;}这样的就是如果存在这个数%i不等于0,就会return 1;

举个例子就是比如在这里27%4不等于0.但是不能说27就是素数。而27可以有3*9得到。所有要拉出去return 1; } return 1; }
扫描二维码关注公众号,回复: 10028145 查看本文章

猜你喜欢

转载自www.cnblogs.com/chenjiaolong/p/12540098.html
今日推荐