# Simply Emirp 題目連結 [UVA 10235](https://onlinejudge.org/external/102/10235.pdf) ## 中文簡述 一個比 1 大的整數如果只有 1 和他本身自己共 2 個因數,我們稱這個數為質數(prime number)。多年來質數一直被數學家們研究著。質數也常被應用在密碼學和編碼理論中。 那麼你曾經把質數倒轉過來嗎?對大部分的質數來說,你將會得到一個組合數(例如:43 變成 34)現在,我們要定義 Emirp(就是把 Prime 反過來拼):如果你把一個質數反過來之後,他仍然是一個質數,並且和原來那個質數不同,那我們就稱這個數為 emirp number。例如:17 是一個emirp,因為 17 和 71 都是質數。在這個問題中,你必須要決定某一個整數 N 是非質數,質數,或 emirp。你可以假設 1<N<1000000。 對每一輸入 N,輸出以下的訊息: 1. "N is not prime.",如果 N 不是一個質數 2. "N is prime.",如果 N 是一個質數,但是不是一個 Emirp 3. "N is emirp.",如果 N 是一個 emirp ## solution: ``` #include<bits/stdc++.h> using namespace std; int getprime(int n) { int check=1,i=2; // n=pow(n,0.5)+1; // cout<<n<<endl; for(i=2;i<n and check ;i++) { if(n%i==0) { check=0; } else { check=1; } // cout<<check<<" "<<i<<endl; } return check; } int flip(int cn1) { int cn2=0; while(cn1>0)//蝧餉??詨? { cn2=cn2*10+cn1%10; cn1=cn1/10; } return cn2; } int main() { int n; while(cin>>n) { int prime=getprime(n); int emirp; if(n==flip(n)) { emirp=0; } else { emirp=getprime(flip(n)); } // cout<<n<<" "<<prime<<" "<<flip(n)<<" "<<emirp<<endl; if(prime and emirp) { cout<<n<<" is emirp."<<endl; } else if (prime and !emirp) { cout<<n<<" is prime."<<endl; } else if(!prime) { cout<<n<<" is not prime."<<endl; } } } ``` ###### tags: `UVA` 回目錄 [學習筆記](/gIBZqAbWTCis7uOPp149gA)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up