【唯一分解定理】Sphenic numbers Gym
来源:互联网 发布:横新软件怎么样 编辑:程序博客网 时间:2024/06/14 14:46
Think:
1知识点:埃氏筛法+分解质因数
2题意:输入n(30≤n≤10467397),判断n是否可以分解为3个不同的质因数,若可以则输出YES,反之输出NO;
3分析:通过埃式筛法预处理素数,一直筛选到2001000(此时已经筛选出大于2000000的素数),若n可以分解为3个素数则说明第三个素数必定小于等于n/2/3(由n的数据范围可判断得到第三个素数不会超过2000000),预处理得到素数表之后将n质因数分解进行判断即可
vjudge题目链接
以下为Accepted代码
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int p, primes[2001400], a[2001400];void get_primes();int main(){ freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); get_primes(); int n, cnt; while(~scanf("%d", &n)){ cnt = 0; for(int i = 0; i < p; i++){ if(n%primes[i] == 0){ cnt++; while(n%primes[i] == 0){ n /= primes[i]; if(n%primes[i] == 0){ cnt = -1; break; } } if(cnt == -1 || cnt > 3) break; } } if(cnt == 3) printf("YES\n"); else printf("NO\n"); } return 0;}void get_primes(){ p = 0; a[1] = 1, a[2] = 0; memset(a, 0, sizeof(a)); for(int i = 2; i <= 2001000; i++){ if(!a[i]){ primes[p++] = i; for(int j = i*2; j <= 2001000; j += i){ a[j] = 1; } } }}
阅读全文
1 0
- 【唯一分解定理】Sphenic numbers Gym
- Sphenic numbers质因数分解
- Sphenic numbers
- HDU GT and numbers (整数的唯一分解定理)
- UVA 10539 Almost Prime Numbers(唯一分解定理)
- 唯一分解定理
- 唯一分解定理
- 数论-唯一分解定理
- 唯一分解定理
- [数论]唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 唯一分解定理
- 整数唯一分解定理
- An express train to reveries CodeForces
- python实现-质数因子
- 获取web项目的绝对路径的方法总结
- ViewPager+小圆点联动
- NOI2015软件包管理器,大力卡常记
- 【唯一分解定理】Sphenic numbers Gym
- MySQL Show命令的用法大全
- C#基础-007 swith-case的用法
- Python3 大型网络爬虫实战 001 --- 搭建开发环境
- Mtbatis传入Date格式异常 Error querying database.
- [002-u-boot-Exynos4412] SDK BL2阶段详解
- poj 1094
- 机器学习笔记——集成学习
- OpenGL