Project Euler 47 Distinct primes factors( 筛法记录不同素因子个数 )
题意:
首次出现连续两个数均有两个不同的质因数是在:
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;
}
Project Euler 47 Distinct primes factors( 筛法记录不同素因子个数 )的更多相关文章
- Project Euler 21 Distinct primes factors( 整数因子和 )
题意: 记d(n)为n的所有真因数(小于n且整除n的正整数)之和. 如果d(a) = b且d(b) = a,且a ≠ b,那么a和b构成一个亲和数对,a和b被称为亲和数. 例如,220的真因数包括1. ...
- Project Euler:Problem 47 Distinct primes factors
The first two consecutive numbers to have two distinct prime factors are: 14 = 2 × 7 15 = 3 × 5 The ...
- (Problem 47)Distinct primes factors
The first two consecutive numbers to have two distinct prime factors are: 14 = 2 7 15 = 3 5 The fi ...
- Project Euler 29 Distinct powers( 大整数质因数分解做法 + 普通做法 )
题意: 考虑所有满足2 ≤ a ≤ 5和2 ≤ b ≤ 5的整数组合生成的幂ab: 22=4, 23=8, 24=16, 25=3232=9, 33=27, 34=81, 35=24342=16, 4 ...
- Project Euler 27 Quadratic primes( 米勒测试 + 推导性质 )
题意: 欧拉发现了这个著名的二次多项式: f(n) = n2 + n + 41 对于连续的整数n从0到39,这个二次多项式生成了40个素数.然而,当n = 40时402 + 40 + 41 = 40( ...
- Project Euler 37 Truncatable primes
题意:3797有着奇特的性质.不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797.797.97和7:同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797.37 ...
- Project Euler 35 Circular primes
题意:197被称为圆周素数,因为将它逐位旋转所得到的数:197/971和719都是素数.小于100的圆周素数有十三个:2.3.5.7.11.13.17.31.37.71.73.79和97.小于一百万的 ...
- Project Euler 58: Spiral primes
从一开始按以下方式逆时针旋转,可以形成一个边长为七的正方形螺旋: 一个有趣的现象是右下对角线上都有一个奇完全平方数,但是更有趣的是两条对角线上的十三个数中有八个数是素数(已经标红),也就是说素数占比为 ...
- Project Euler 46 Goldbach's other conjecture( 线性筛法 )
题意: 克里斯蒂安·哥德巴赫曾经猜想,每个奇合数可以写成一个素数和一个平方的两倍之和 9 = 7 + 2×1215 = 7 + 2×2221 = 3 + 2×3225 = 7 + 2×3227 = 1 ...
随机推荐
- php7 使用imagick 的坑
imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API. Imag ...
- Spring MVC-表单(Form)标签-复选框(Checkbox)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_checkbox.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...
- 解决Chrome在隐身模式下无法播放Flash视频
在地址栏输入: chrome://flags/#prefer-html-over-flash 打开如下界面,并设置成如下所示: 然后点击左下方重启按钮: 参考: http://www.cnblogs. ...
- 打破传统天价SAP培训,开创SAP师徒之路,经验丰富的老顾问带徒弟 qq群150104068
SAP领航社区,开设了一个导师性质的师徒圈子,类似大学导师带研究生,导师给学生安排课题.分配任务.分享资料,让学生自学提高.我们的教学方法是以自学为主.辅导为辅助,在实践中积累经验掌握原理.主要方向A ...
- viz.js操作流程
1.下载依赖的js文件,并引入 <script src="${root }/resources/js/graphviz/viz.js"></script> ...
- ActionFilterAttribute
https://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.onactionexecuting(v=vs ...
- Linux - 目录结构与查看,复制,删除,剪切指令
Linux当中,一切皆文件. Linux目录结构 / 根分区,只有root用户对此目录拥有写权限. /etc 配置文件 /boot 启动文件 /var 可增长的目录 .日志,文件等. /root 管理 ...
- if,elif,else的关系 input print int的用法
qian=input("找劳保网是什么网站?:")if qian=="zhaolaobaowang.com": print("正确")els ...
- RabbitMQ消息队列服务
MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 一个软件它 ...
- 使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式
第一章企业解决方案中构建设计模式 我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统.如果直接去设计一个复杂系统,结果最终会导致失败.在设计系统的时候,先设计一个能够正常工作的系统,然后在此 ...