题解:

第一次:

算法复杂度过高,导致编译超时,需要优化

#include<stdio.h>
#include<math.h>
int a[100000001] = { 0 };
int p(int n) {
 int t = n, ret = 0;
 while (t > 0) {
  t /= 10;
  ret++;
 }
 if (ret == 1) {
  printf("%d\n", n);
  return 0;
 }
 t = ret;
 t /= 2;
 ret -= 1;
 
 while (n > 0 && t > 0) {
  int a=n /pow(10, ret);
  if (n % 10 == a ) {
   n %= (int)pow(10, ret);
   n /=10;
   ret -= 2;
   t--;
  }
  else {
   return 0;
  }
 }
 return 1;
}
int main()
{
 int A, B, i, j;
 scanf("%d %d", &A, &B);
 
 //0:质数,1:合数
 for (i = 2; i < sqrt(B); i++) {
  for (j = i+1; j <= B; j++) {
   if (j % i == 0 && a[j] == 0) {
    a[j] = 1;
   }
  }
 }
 for (i = A; i <= B; i++) {
  if ( a[i] == 0&&p(i)) {
   printf("%d\n", i);
  }
 }
 return 0;
}
 
 自己的尝试还是差最大的数据:
for (j = 6; j < 10000000; j += 2) {
  a[j] = 1;
 }
 for (i = 3; i <3163; i+=2) {    //sqrt()
  for (j = i*2; j <= 10000000; j+=i) {
   if ( a[j] == 0) {
    a[j] = 1;
   }
  }
 }
 
 
看了题解后:
1.我认为简单的判断回文数的代码:
bool pd_h(int x)
{

int y=x,num=0;//int y=x,防止x被改变
    while (y!=0)
    {
        num=num*10+y%10;//上一次数字的记录进位再加上下一位数
        y/=10;
    }
    if (num==x) return 1;
    else return 0;
}

 

2.你会发现,6同时被2和3各筛了一次。它在计算时就被访问了两次,这样会导致效率低下。

原理:对于任意合数,必定可以有最小质因子乘以最大因子的分解方式。因此,对于每个合数,只要用最大因子筛一遍,枚举时只要枚举最小质因子即可。

int vis[MAXN];
int prime[MAXN];
void Prime()
{
    int cnt=0;
    for(int i=2;i<=n;i++)
    {
        if(!vis[i]) prime[cnt++]=i;
        for(int j=0;j<cnt&&i*prime[j]<=n;j++)
        {
            vis[i*prime[j]]=i;
            if(i%prime[j]==0) break;
        }
    }
}

(函数)P1217 [USACO1.5]回文质数 Prime Palindromes的更多相关文章

  1. P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  2. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  3. luogu P1217 [USACO1.5]回文质数 Prime Palindromes x

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  4. P1217 [USACO1.5]回文质数 Prime Palindromes

    题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...

  5. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes【取回文数/数论/字符串】

    题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...

  6. P1217 [USACO1.5]回文质数 Prime Palindromes(stringstream,sizeof(num)/sizeof(num[0]),打表)

    题目描述 因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)( 一亿)间 ...

  7. P1217 [USACO1.5]回文质数 Prime Palindromes(技巧+暴力枚举+线性筛)

    技巧:就是偶数位的回文数字一定不是质数---------证明:奇数位之和sum1==偶数位之和sum2的数字可以被11整除.(11除外,这是一个坑点) 最高位,最低位必须是 1, 3, 7, 9 暴力 ...

  8. Java实现 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes

    import java.util.Scanner; public class Main { private static Scanner cin; public static void main(St ...

  9. [USACO1.5]回文质数 Prime Palindromes

    题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...

随机推荐

  1. WMware workstation 镜像文件

    https://mirrors.aliyun.com/centos/7.4.1708/isos/x86_64/

  2. Acwing199 余数之和

    原题面:https://www.acwing.com/problem/content/201/ 题目大意:给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 ...

  3. P1051复数乘法

    P1051复数乘法 转跳点:

  4. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  5. PHP笔记03

    PHP表单 获取表单数据 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. 吴裕雄--天生自然C++语言学习笔记:C++ 命名空间

    假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等. 同样的情况也出现在 C++ 应用程 ...

  7. MongoDB Limit

    版权所有,未经许可,禁止转载 章节 MongoDB 入门 MongoDB 优势 MongoDB 安装 MongoDB 数据建模 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB ...

  8. python基础(一)内置类型及方法

    python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...

  9. UVA - 1615 Highway(高速公路)(贪心+区间选点)

    题意:给定平面上n(n<=105)个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里德距离不超过D. 分析: 1.根据D可以算出每个点在x轴上的可选区 ...

  10. 微服务中一个项目install打包总是失败

    在微服务的一个项目中install打包时总是报错如下: [INFO] Scanning for projects... [INFO] [INFO] -------------------------- ...