Given a string of digits, your task is to find the largest prime number which presents in that string. Our prime numbers are values between 2 to 100,000 only.
Input
Each line contains a string of digits (255 digits at most). The line contains only ‘0’ indicates the end which will not be processed. The input does not exceed 1,000 lines.
Output
Print out in each line the largest prime number found in each input string.
Sample Input
11245
91321150448
1226406
0
Sample Output
11
1321
2

问题链接:UVA12542 LA6149 Prime Substring
问题简述:给定若干数字字符串,求其子串中最大的素数。素数值小于100000。
问题分析
    用筛选法求得小于100000的素数备用,以便加快计算速度。
    计算时,从最大长度开始。对于首字母为0的子串需要略过,要把它当作短子串进行处理。
程序说明
    需要注意特殊情况,例如1、4、6、44和66等,这些数字串的子串不存在素数,这时的输出应该是0。
    这个题解程序在LA6149中出现WA,不理解。
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA12542 LA6149 Prime Substring */#include <bits/stdc++.h>using namespace std;const int DL = 5;
const int N = 100000;
const int SQRTN = sqrt((double) N);
bool isprime[N + 1];
// Eratosthenes筛选法
void esieve(void)
{memset(isprime, true, sizeof(isprime));isprime[0] = isprime[1] = false;for(int i = 2; i <= SQRTN; i++) {if(isprime[i]) {for(int j = i * i; j <= N; j += i)  //筛选isprime[j] = false;}}}int mynatoi(char s[], int start, int len)
{if(s[start] == '0') return 0;int ret = 0;for(int i = start; len; i++, len--) {ret *= 10;ret += s[i] - '0';}return ret;
}const int L = 255;
char s[L + 1];int main()
{esieve();int len, ans;while(~scanf("%s", s)) {if((len = strlen(s)) == 1 && s[0] == '0') break;ans = 0;for(int i = DL; i >= 1; i--) {if(i > len) continue;for(int j = 0; j <= len - i; j++) {int a = mynatoi(s, j, i);if(isprime[a] && a > ans) ans = a;}if(ans > 0) break;}printf("%d\n", ans);}return 0;
}

UVA12542 LA6149 Prime Substring【筛选法+贪心】相关推荐

  1. UVA10852 Less Prime【筛选法】

    Let n be an integer, 100 ≤ n ≤ 10000, find the prime number x, x ≤ n, so that n − p ∗ x is maximum, ...

  2. PAT甲题题解-1059. Prime Factors (25)-素数筛选法

    用素数筛选法即可. 范围long int,其实大小范围和int一样,一开始以为是指long long,想这就麻烦了该怎么弄. 而现在其实就是int的范围,那难度档次就不一样了,瞬间变成水题一枚,因为i ...

  3. UVA583 UVALive5406 Prime Factors【素数因子+筛选法】

    Webster defines prime as: prime (pr¯im) n. [ME, fr. MF, fem. of prin first, L primus; akin to L prio ...

  4. Python:实现prime sieve eratosthenes埃拉托斯特尼素数筛选法算法(附完整源码)

    Python:实现prime sieve eratosthenes埃拉托斯特尼素数筛选法算法 # flake8: noqa def prime_sieve_eratosthenes(num):prim ...

  5. 经典算法-并查集、快速排序、字典序算法、二分搜索、牛顿开方法、求质数(筛选法)、编辑距离、滑动窗口、异或求重、长除法

    目录 ​​​​​​​​​​​​​​ 并查集 快速排序 字典序算法 二分搜索 开根号-牛顿开方法 求质数 编辑距离 滑动窗口 异或求重 长除法 ​​​​​​​ 并查集 并查集用于解决相同元素集合动态连接 ...

  6. python使用集合实现筛选法求素数-python素数筛选法浅析

    原理: 素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作 ...

  7. 素数与线性筛选法初级版

    今天我们来学习一些关于素数和线性筛选法的知识,这类问题在ACM-ICPC中常常遇到,所以很有必要学好它. 首先,来看素数筛选的一个题. 题目:http://codeforces.com/problem ...

  8. 素数-试除法和埃式筛选法模板

    试除法: bool is_prime(int n) {if (n <= 1) return false;for (int i = 2;i<=sqrt(n);i++)//这样写更好!if ( ...

  9. python用筛选法求解小于n的所有素数_用筛选法求解n以内的所有素数

    用筛选法求解n以内的所有素数:筛选法的思想是一个数是素数则这个数的所有的倍数都是合数,我们不去找素数而去找合数,剩下的就是素数了.一个合数其最大的质因子不会超过其开发数,所以只要迭代到其最大数的开方数 ...

最新文章

  1. 皮一皮:大家对自己的定位都挺准的...
  2. Distributed Systems-leader based分布式一致性协议
  3. 关于mysql数据库的备份和还原
  4. es6 --- Thunk函数的作用
  5. 走过小公司的坑之入职一周
  6. Blazor 0.5.0 升级及新特性介绍
  7. import 导入和from导入的区别
  8. 力扣 数组中的最长山脉
  9. 严阵以待的意思是什么,怎么用严阵以待造句?
  10. 计算机中心机房设计规范,GB50174-2017 数据中心机房设计规范
  11. pe_xscan作了3点更新
  12. nod32 下载几账户翻译
  13. windows--bat--通过bat批处理写入.reg文件在注册
  14. 飞天2.0面向万物智能的操作系统正式启幕
  15. html链接ppt,PPT超链接怎么做?
  16. prompt learning——你需要掌握的基础知识以及离散型 prompt 的代码
  17. 无线传感器网络的时钟同步估计问题(Matlab代码实现)
  18. 微服务架构与开源框架
  19. 2022年全球及中国鼻梁条行业头部企业市场占有率及排名调研报告
  20. CSDN文章编辑技巧

热门文章

  1. 微软 服务器系统,微软正在开发Windows Server 2022服务器系统
  2. 计算机键盘prtscr,键盘上的SCR是什么意思(电脑截图的快捷方式都有哪些)
  3. android adbd分析,android6.0 adbd深入分析(三)adb root重启adbd流程
  4. 深入理解kafka_深入理解Kafka随书代码示例已整理完毕,附地址~
  5. 文档服务器备份吗,本地资料和云服务器备份吗
  6. C语言客户端窗口创建,【自己动手】用C语言写一个基于服务器和客户端!
  7. Phoenix的数据类型和操作符、函数
  8. java使用poi.xssf 写入内容到excel表格中 和 读取 表格里面的数据
  9. 如何移动没有标题的窗体
  10. tenorflow异常集合(自用记录)