You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CSP/筛法/luogu_P1217_biao.cpp

99 lines
3.0 KiB

#include <bits/stdc++.h>
using namespace std;
int Prime(int x)
{
if (x == 1 || x == 0)
return 0;
if (x == 2 || x == 3)
return 1;
if (x % 2 == 0 || x % 3 == 0)
return 0;
for (int i = 2; i <= x / 2; i++)
{
if (x % i == 0)
return 0;
}
return 1;
}
int main()
{
freopen("D:/我的/大学/计算机类/1算法学习/CSP/筛法/P1217.txt", "w", stdout);
int d1, d2, d3, d4, d5, palindrome;
int k;
int a, b;
a = 5;
b = 100000000;
cout << "{";
//1
for (d1 = 1; d1 <= 9; d1 += 2)
{
palindrome = d1;
if (a > palindrome * 10)
break;
if (a <= palindrome && palindrome <= b && Prime(palindrome) == 1)
cout << palindrome << ",";
if (palindrome > b)
return 0;
}
//2
if (a <= 11 && 11 <= b)
cout << 11 << ",";
//3
for (d1 = 1; d1 <= 9; d1 += 2)
for (d2 = 0; d2 <= 9; d2++)
{
palindrome = 100 * d1 + 10 * d2 + d1;
if (a > palindrome * 10)
break;
if (a <= palindrome && palindrome <= b && Prime(palindrome) == 1)
cout << palindrome << ",";
if (palindrome > b)
return 0;
}
//5
for (d1 = 1; d1 <= 9; d1 += 2)
for (d2 = 0; d2 <= 9; d2++)
for (d3 = 0; d3 <= 9; d3++)
{
palindrome = 10000 * d1 + 1000 * d2 + 100 * d3 + 10 * d2 + d1;
if (a > palindrome * 10)
break;
if (a <= palindrome && palindrome <= b && Prime(palindrome) == 1)
cout << palindrome << ",";
if (palindrome > b)
return 0;
}
//7
for (d1 = 1; d1 <= 9; d1 += 2)
for (d2 = 0; d2 <= 9; d2++)
for (d3 = 0; d3 <= 9; d3++)
for (d4 = 0; d4 <= 9; d4++)
{
palindrome = 1000000 * d1 + 100000 * d2 + 10000 * d3 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
if (a > palindrome * 10)
break;
if (a <= palindrome && palindrome <= b && Prime(palindrome) == 1)
cout << palindrome << ",";
if (palindrome > b)
return 0;
}
//9
for (d1 = 1; d1 <= 9; d1 += 2)
for (d2 = 0; d2 <= 9; d2++)
for (d3 = 0; d3 <= 9; d3++)
for (d4 = 0; d4 <= 9; d4++)
for (d5 = 0; d5 <= 9; d5++)
{
palindrome = 100000000 * d1 + 10000000 * d2 + 1000000 * d3 + 100000 * d4 + 10000 * d5 + 1000 * d4 + 100 * d3 + 10 * d2 + d1;
if (a > palindrome * 10)
break;
if (a <= palindrome && palindrome <= b && Prime(palindrome) == 1)
cout << palindrome << ",";
if (palindrome > b)
return 0;
}
cout << "}";
return 0;
}