题意:

首次出现连续两个数均有两个不同的质因数是在:

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( 筛法记录不同素因子个数 )的更多相关文章

  1. 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. ...

  2. 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 ...

  3. (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 ...

  4. 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 ...

  5. Project Euler 27 Quadratic primes( 米勒测试 + 推导性质 )

    题意: 欧拉发现了这个著名的二次多项式: f(n) = n2 + n + 41 对于连续的整数n从0到39,这个二次多项式生成了40个素数.然而,当n = 40时402 + 40 + 41 = 40( ...

  6. Project Euler 37 Truncatable primes

    题意:3797有着奇特的性质.不仅它本身是一个素数,而且如果从左往右逐一截去数字,剩下的仍然都是素数:3797.797.97和7:同样地,如果从右往左逐一截去数字,剩下的也依然都是素数:3797.37 ...

  7. Project Euler 35 Circular primes

    题意:197被称为圆周素数,因为将它逐位旋转所得到的数:197/971和719都是素数.小于100的圆周素数有十三个:2.3.5.7.11.13.17.31.37.71.73.79和97.小于一百万的 ...

  8. Project Euler 58: Spiral primes

    从一开始按以下方式逆时针旋转,可以形成一个边长为七的正方形螺旋: 一个有趣的现象是右下对角线上都有一个奇完全平方数,但是更有趣的是两条对角线上的十三个数中有八个数是素数(已经标红),也就是说素数占比为 ...

  9. Project Euler 46 Goldbach's other conjecture( 线性筛法 )

    题意: 克里斯蒂安·哥德巴赫曾经猜想,每个奇合数可以写成一个素数和一个平方的两倍之和 9 = 7 + 2×1215 = 7 + 2×2221 = 3 + 2×3225 = 7 + 2×3227 = 1 ...

随机推荐

  1. php7 使用imagick 的坑

    imagick是一个PHP的扩展,用ImageMagick提供的API来进行图片的创建与修改,不过这些操作已经包装到扩展imagick中去了,最终调用的是ImageMagick提供的API. Imag ...

  2. Spring MVC-表单(Form)标签-复选框(Checkbox)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_checkbox.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  3. 解决Chrome在隐身模式下无法播放Flash视频

    在地址栏输入: chrome://flags/#prefer-html-over-flash 打开如下界面,并设置成如下所示: 然后点击左下方重启按钮: 参考: http://www.cnblogs. ...

  4. 打破传统天价SAP培训,开创SAP师徒之路,经验丰富的老顾问带徒弟 qq群150104068

    SAP领航社区,开设了一个导师性质的师徒圈子,类似大学导师带研究生,导师给学生安排课题.分配任务.分享资料,让学生自学提高.我们的教学方法是以自学为主.辅导为辅助,在实践中积累经验掌握原理.主要方向A ...

  5. viz.js操作流程

    1.下载依赖的js文件,并引入 <script src="${root }/resources/js/graphviz/viz.js"></script> ...

  6. ActionFilterAttribute

    https://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.onactionexecuting(v=vs ...

  7. Linux - 目录结构与查看,复制,删除,剪切指令

    Linux当中,一切皆文件. Linux目录结构 / 根分区,只有root用户对此目录拥有写权限. /etc 配置文件 /boot 启动文件 /var 可增长的目录 .日志,文件等. /root 管理 ...

  8. if,elif,else的关系 input print int的用法

    qian=input("找劳保网是什么网站?:")if qian=="zhaolaobaowang.com": print("正确")els ...

  9. RabbitMQ消息队列服务

    MQ 全称为 Message Queue, 消息队列( MQ ) 是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们. 一个软件它 ...

  10. 使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

    第一章企业解决方案中构建设计模式 我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统.如果直接去设计一个复杂系统,结果最终会导致失败.在设计系统的时候,先设计一个能够正常工作的系统,然后在此 ...