信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1411:區(qū)間內(nèi)的真素數(shù)
OpenJudge NOI 1.13 23:區(qū)間內(nèi)的真素數(shù)
【題目考點】
1. 質(zhì)數(shù)
2. 數(shù)字拆分
【解題思路】
設(shè)函數(shù)判斷一個數(shù)是否是質(zhì)數(shù)
設(shè)函數(shù)求一個數(shù)字反序后的數(shù)字
對一個數(shù)字做數(shù)字拆分,即可倒序得到一個數(shù)字的各數(shù)位。再將這些數(shù)字從高位到低位組合起來,即可得到原數(shù)字反序后的數(shù)字。
遍歷從m到n的數(shù)字,看每個數(shù)字及其反序后的數(shù)字是否都是質(zhì)數(shù),如果是,那么這個數(shù)是真素數(shù)。
【題解代碼】
解法1:
#include <bits/stdc++.h> using namespace std; bool isPrime(int n)//判斷是否是質(zhì)數(shù) {if(n < 2)return false;for(int i = 2; i <= sqrt(n); ++i)if(n % i == 0)return false;return true; } int rev(int n)//數(shù)字反序 {int num = 0;for(int a = n; a > 0; a /= 10)//數(shù)字拆分 前提n >= 1num = num * 10 + a % 10;return num; } int main() {int m, n;cin >> m >> n;bool hasShow = false;//是否已經(jīng)有輸出 for(int i = m; i <= n; ++i){if(isPrime(i) && isPrime(rev(i)))//如果i和i的逆序的數(shù)字都是質(zhì)數(shù){if(hasShow == true)//如果已經(jīng)輸出過 cout << ',';elsehasShow = true;cout << i;}}if(hasShow == false)//如果沒有輸出過 cout << "No";return 0; }總結(jié)
以上是生活随笔為你收集整理的信息学奥赛一本通 1411:区间内的真素数 | OpenJudge NOI 1.13 23:区间内的真素数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css 透明叠加_细品CSS(二)
- 下一篇: java 线程 wait sleep_J