判斷回文素數


回文素數:倆個方面一個是判斷是不是回文數,

     另一個是判斷是不是素數。

來一個一個解決。

回文數:顧名思義,就是關於中心對稱。我們現在有一個簡單的方法,就是根據回文數的特性,就是從前面算和從后邊算都是可以算出同一個數的。

我們還需要知道一個數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; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM