Project Euler 47 Distinct primes factors( 筛法记录不同素因子个数 )
2024-08-23 19:58:19
题意:
首次出现连续两个数均有两个不同的质因数是在:
14 = 2 × 7
15 = 3 × 5
首次出现连续三个数均有三个不同的质因数是在:
644 = 22 × 7 × 23
645 = 3 × 5 × 43
646 = 2 × 17 × 19
首次出现连续四个数均有四个不同的质因数时,其中的第一个数是多少?
方法一:普通筛法
/*************************************************************************
> File Name: euler047.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年06月30日 星期五 15时21分48秒
************************************************************************/
#include <stdio.h>
#include <inttypes.h>
#define MAX_N 1000000
int32_t prime[MAX_N + 10] = {0};
int32_t fac[MAX_N + 10]= {0};
void Init() {
for (int32_t i = 2 ; i < MAX_N ; i ++) {
if (!prime[i]) {
for (int32_t j = i ; j < MAX_N ; j += i) {
prime[j] = i;
fac[j]++;
}
}
}
}
int32_t main() {
Init();
for (int32_t i = 2 ; i < MAX_N ; i++) {
if ((fac[i] > 3) && (fac[i + 1] > 3) && (fac[i + 2] > 3) && (fac[i + 3] > 3)) {
printf("ans = %d\n",i); break;
}
}
return 0;
}
方法二:线性筛
/*************************************************************************
> File Name: euler047t2.c
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年06月30日 星期五 15时45分48秒
************************************************************************/
#include <stdio.h>
#include <inttypes.h>
#define MAX_N 1000000
int32_t prime[MAX_N + 10] = {0};
int32_t facNum[MAX_N + 10] = {0};
void Init() {
for (int32_t i = 2 ; i < MAX_N ; i++) {
if (!prime[i]) { prime[ ++prime[0] ] = i; facNum[i] = 1; }
for (int32_t j = 1 ; j <= prime[0] ; j++) {
if (i * prime[j] > MAX_N) break;
prime[i * prime[j]] = 1;
if (i % prime[j] == 0) {
facNum[i * prime[j]] = facNum[i];
break;
} else {
facNum[i * prime[j]] = facNum[i] + 1;
}
}
}
}
int32_t main() {
Init();
for (int32_t i = 1 ; i < MAX_N ; i++) {
if (facNum[i] != 4 ) continue;
if (facNum[i] != facNum[i + 1]) continue;
if (facNum[i + 1] != facNum[i + 2]) continue;
if (facNum[i + 2] != facNum[i + 3]) continue;
printf("%d\n",i);
break;
}
return 0;
}
最新文章
- 期待中冷静前行,专家预测2017年VR产业5大发展趋势
- 判断输入的数是否为数字,不使用isNaN
- 2014 Super Training #7 E Calculate the Function --矩阵+线段树
- 【poj1804】 Brainman
- 消息队列入门(四)ActiveMQ的应用实例
- WEB网页插件 如何实现 选择上传图片路径 【高级问题】
- Python 描述符(descriptor) 杂记
- python的pip和virtualenv使用心得
- circle area
- java根据图片和文字生成自定义图片
- BZOJ 3223 文艺平衡树
- 说说Xcode4中xib绑定的原理
- Springboot启动源码详解
- python--对函数的理解
- TLD算法原理2--学习理解之(三)
- mysql查询中AND与OR注意事项
- 监控网卡流量脚本(Python)
- AtCoder Grand Contest 009
- λ(lambda)表达式
- 关于LP64,ILP64,LLP64,ILP32,LP32字长(数据)模型
热门文章
- Solr部分更新MultiValued的Date日期字段时报错及解决方案:Invalid Date String:&#39;Mon Sep 14 01:48:38 CST 2015&#39;
- Linux排序命令sort(转)
- Spring Boot上传文件
- 18110 Koishi&#39;s travel, Satori&#39;s travel
- vmware mac 分辨率设置
- [Linux]RedHat Linux 忘记rootpassword该怎样又一次设置password
- Windows 10彻底关闭自动更新
- [CQOI 2007] 涂色
- expdp通过dblink远端导出
- Java Socket通讯---网络基础