HDU Largest prime factor(埃拉托色尼筛选法求素数模板法改动)
来源:互联网 发布:mac全屏快捷键设置 编辑:程序博客网 时间:2024/05/01 02:32
题目地址:点击打开链接
题意:给你一个数,求它这个数的最大素因子在素数表的第几位
思路:刚开始思路有一点错误,看错误代码
错误代码:
#include <iostream>0#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>typedef long long ll;using namespace std;const int maxn = 1e6+10;int isprime[maxn];void init(){ int i,j; int nprime = 0; memset(isprime,-1,sizeof(isprime)); isprime[1] = 0; for(i=2; i<maxn; i++)//刚开始程序老是崩溃,后来开小就不会崩溃,但实际上我觉得应该开到maxn,AC的程序也开到了maxn { if(isprime[i] == -1) { nprime++; isprime[i] = nprime; for(j=i*i; j<maxn; j+=i)//这里和打素数表有一点不同不是从i*i开始的,要是这样写程序会奔溃, { isprime[j] = nprime; } } }}int main(){ int n; init(); while(scanf("%d",&n) != EOF) { printf("%d\n",isprime[n]); } return 0;}AC代码1:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>typedef long long ll;using namespace std;const int maxn = 1e6+10;int isprime[maxn];void init(){ int i,j; int nprime = 0; memset(isprime,-1,sizeof(isprime)); isprime[1] = 0; for(i=2; i<maxn; i++) { if(isprime[i] == -1) { nprime++; for(j=i; j<maxn; j+=i) { isprime[j] = nprime; } } }}int main(){ int n; init(); while(scanf("%d",&n) != EOF) { printf("%d\n",isprime[n]); } return 0;}AC代码2:
#include<stdio.h>int a[1000000]={0};int main(){ int i,j,l=0,n; a[1]=0; for(i=2;i<1000000;i++) { if(!a[i]) { l++; for(j=i;j<1000000;j+=i) { a[j]=l; } } } while(scanf("%d",&n)!=EOF) { printf("%d\n",a[n]); } return 0;}
程序更简洁
0 0
- HDU Largest prime factor(埃拉托色尼筛选法求素数模板法改动)
- HDU 2136 Largest prime factor (筛选法求素数)
- HDU2136 Largest prime factor 筛选法求素数位置
- HDU 2136 Largest prime factor【素数筛选法】
- Largest prime factor(素数筛选法)
- hdu 2136 Largest prime factor(素数筛选)
- HDU 2136 Largest prime factor(素数筛选+打表)
- HDU 2136 Largest prime factor(筛选法)
- HDU 2136 Largest prime factor(筛选法)
- Largest prime factor(筛选法)
- HDU-2136-Largest prime factor(素数筛法)
- HDU 2136 Largest prime factor(素数筛法)
- hdu 2136 (Largest prime factor)就是简单 的筛选素数法
- HDOJ(HDU) 2136 Largest prime factor(素数筛选)
- HDOJ 2136 Largest prime factor 13.04.21 周赛结题报告 (素数筛选法)
- HDU:2136 Largest prime factor!(素数)
- 【HDU 2136】Largest prime factor(素数)
- Prime Distance(筛选法求素数 )
- 黑马程序员——OC学习笔记 类与对象的使用
- Hibernate配置文件中数据类型date与timestamp区别
- Java消息服务(JMS)学习小结
- install redis service as windows service in windows platform--在windows平台下以windows服务方式安装redis
- 什么时候应该避免写代码注释?
- HDU Largest prime factor(埃拉托色尼筛选法求素数模板法改动)
- OS之进程调度(二)
- SEO优化之网站URL路径该怎样去做
- Beaglebone Black(1)Windows远程控制--一线通
- python十分钟入门
- java的内存模型与线程
- java web开发的标签库
- JavaScript中的new 操作符(转)总结
- 泛函分析学习总结