- ๊ทธ๋ zp์์ ์์ ๋นจ๋ฆฌ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ํ๋ ์ ์ด ์๋๋์ฃ . ๋ ๊ทธ๋ฐ๊ฑฐ ๋ญํ๋ฌ ํ๋ ํ๋๋ฐ..;;
- ๋ผ์ ๋ฆฌ๊ฒ ๋๊ปด์ง๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ค์์ฑ์..
- ํ
์คํธ ํด์ 5์ด ๋๊ธฐ๋ฉด ๋ค์ ์ง์ค๋ผ๋ค์. ์ฒจ์ ์์ ๊ฑ ์๋ฌด๋ ๊ฒ๋ ๊ตฌํด์ ๋๋๋.. ํ ์ฒ๋ง์ฏค ๊ฐ๋๊น ์ด์ด์๋ ์๊ฐ์ด ๋์ค๋๊ตฐ์..;; ๊ทธ๋์ ์์์ ์ฑ์ง ์๊ฐํด์ ์ด๋ฆฌ์ ๋ฆฌ ๋ฏ์ด ๊ณ ์น๋ค๊ฐ ๋ณ ์ด์ํ ๋ฐฉ๋ฒ์ผ๋ก 9๊ฐ ํ
์คํธ ๋ชจ๋ 5์ด ์ด๋ด ํต๊ณผ ํ์ต๋๋ค. ใ
.ใ
๋ง์ง๋ง ํ
์คํธ๋ 4.9xXX์ด ๋ผ๋;;--;
~cpp
#include <iostream>
#include <string>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("pprime.in");
ofstream fout("pprime.out");
void InputMinMax(int& n, int& m);
string IntConvertToString(int n);
bool IsPrime(const int& n);
bool IsPalinDromes(const string& str);
void OutputResult(const int& n, const int& m);
void FillPrimeList(const int& n, const int& m);
int main()
{
int max,min;
InputMinMax(min, max);
OutputResult(min,max);
return 0;
}
void InputMinMax(int& min, int& max)
{
fin >> min;
fin >> max;
}
void OutputResult(const int& min, const int& max)
{
int init;
if(min<7)
init = 5;
else
init = (min/6)*6 + 1;
bool flag[3] = {false,};
for(int i = init ; i <=max ;)
{
if(IsPalinDromes(IntConvertToString(i)))
{
if(IsPrime(i))
{
fout << i << endl;
}
}
int temp;
if(i >= 1000 && !flag[0])
{
temp = 9997;
flag[0] = true;
}
if(i >= 100000 && !flag[1])
{
temp = 999997;
flag[1] = true;
}
if(i >= 10000000 && !flag[2])
{
temp = 99999997;
flag[2] = true;
}
if(flag[0] && flag[1] && flag[2])
i = temp;
if(i%6==1)
i += 4;
else if(i%6==5)
i += 2;
}
}
string IntConvertToString(int n)
{
int maxlessn ;
string ret;
for(int i = 1 ; i <= 100000000 ; i *= 10)
{
if(i > n)
{
maxlessn = i/10;
break;
}
}
for(int i = maxlessn ; i >= 1 ; i /= 10)
{
int t = n / maxlessn;
n -= maxlessn * t;
maxlessn /= 10;
ret += (char)t + 48;
}
return ret;
}
bool IsPalinDromes(const string& str)
{
if( (str.length() % 2 == 0) && str.length() < 2)
return false;
int n = str.length()/2;
for(int i = 0 ; i < n ; i++)
{
if( str[i] != str[str.length() - i - 1] )
return false;
}
return true;
}
bool IsPrime(const int& n)
{
if(!(n%2))
return false;
for(int i = 3 ; i <= sqrt(n) ; i+=2)
{
if(!(n%i))
return false;
}
return true;
}