Advertisement
Guest User

1

a guest
Dec 11th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5.  
  6. using namespace std;
  7. char ys[9] = {0};
  8. int mgs[3] = {0};//分解每个数
  9. int module = 0;//余数
  10. int x = 0;//三位数真实的  021=21
  11. int s = 0;
  12. bool checkprime(int a) {
  13.     for (int i = 2; i>=0; i--) {
  14.         module = a;
  15.         mgs[i] = a % 10;
  16.         module = a / 10;
  17.     }
  18.     if (mgs[0] != 0) {//百位不为0
  19.         for (int i = 2; i < a; i++) {
  20.             if (a % i == 0) {
  21.                 return false;
  22.             }
  23.         }
  24.     }
  25.     else if (mgs[0] == 0) {//百位为0
  26.         if (mgs[1] == 0) {//十位为0
  27.             if (mgs[2] == 0) {//个位为0
  28.                 return false;
  29.             }
  30.             else if (mgs[2] == 1) {//个位为1
  31.                 return false;
  32.             }
  33.             else {//个位不为1
  34.                 for (int i = 2; i < mgs[2]; i++) {
  35.                     if (mgs[2] % i == 0) {
  36.                         return false;
  37.                     }
  38.                 }
  39.             }
  40.         }
  41.         else {//百位为0  十不为0
  42.             x = mgs[2] + mgs[1] * 10;
  43.             for (int i = 2; i < x; i++) {
  44.                 if (x % i == 0) {
  45.                     return false;
  46.                 }
  47.             }
  48.         }
  49.     }
  50.     return true;
  51. }
  52. bool checksqrt(int a) {
  53.     for (int i = 2; i>=0; i--) {
  54.         module = a;
  55.         mgs[i] = a % 10;
  56.         module = a / 10;
  57.     }
  58.     if (mgs[0] != 0) {
  59.         s = sqrt(a);
  60.         if (s * s == a) {
  61.             return true;
  62.         }
  63.         else {
  64.             return false;
  65.         }
  66.     }
  67.     else if (mgs[0] == 0) {
  68.         if (mgs[1] == 0) {
  69.             if (mgs[2] == 0) {
  70.                 return false;
  71.             }
  72.             else {
  73.                 s = sqrt(mgs[2]);
  74.                 if (s * s == a) {
  75.                     return true;
  76.                 }
  77.                 else {
  78.                     return false;
  79.                 }
  80.             }
  81.         }
  82.         else {
  83.             x = mgs[2] + mgs[1] * 10;
  84.             s = sqrt(x);
  85.             if (s * s == x) {
  86.                 return true;
  87.             }
  88.             else {
  89.                 return false;
  90.             }
  91.         }
  92.     }
  93. }
  94. bool check(int m) {
  95.     for (int i = 1; i<=9; i++) {
  96.         ys[i] = m % 10;
  97.         if (ys[i] == 3) {
  98.             if ((m / 10) % 10 == 1) {
  99.                 return true;
  100.             }
  101.         }
  102.         m = m / 10;
  103.     }
  104.     return false;
  105. }
  106.  
  107.  
  108. int main() {
  109.     char a[10] = { 0 };
  110.     char b[10] = { 0 };
  111.     int m, n;
  112.     cin >> m >> n;
  113.  
  114.     int front = 0;
  115.     int back = 0;
  116.     int flag = 0;
  117.     for (int i = m; i <= n; i++) {
  118.         front = i / 1000000;
  119.        
  120.         if (!checkprime(front)) {
  121.             continue;
  122.         }
  123.         back = i % 1000;
  124.        
  125.         if (!checksqrt(back*1.0)) {
  126.             continue;
  127.         }
  128.         if (check(i)) {
  129.             continue;
  130.         }
  131.         flag++;
  132.     }
  133.     cout << flag << endl;
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement