EularProject 47:具有相同个数因子的连续数字

Distinct primes factors

Problem 47

The first two consecutive numbers to have two distinct prime factors are:

14 = 2 × 7

15 = 3 × 5

The first three consecutive numbers to have three distinct prime factors are:

644 = 22 × 7 × 23

645 = 3 × 5 × 43

646 = 2 × 17 × 19.

Find the first four consecutive integers to have four distinct prime factors. What is the first of these numbers?

Answer:

134043

__author__ = ‘zhengyi‘
primeNum=4
consecutiveNum=4

from math import sqrt
def IsPrime(x):
    k=int(sqrt(x))+1
    for i in range(2,k):
        if x%i==0:
            return False
    return True

def primeCount(x):
    result=0
    for i in range(0,len(primeSet)):
        if x%primeSet[i]==0:
            result+=1
            while x%primeSet[i]==0:
                x//=primeSet[i]
            if x==1:
                return result

primeSet=[]
p=1
consecutive=0
while True:
    p+=1
    if IsPrime(p):
        primeSet.append(p)
        consecutive=0
    else:
        if primeCount(p)==primeNum:
            consecutive+=1
            if consecutive==consecutiveNum:
                print(p-consecutiveNum+1)
                break
        else:
            consecutive=0

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-19 10:08:50

EularProject 47:具有相同个数因子的连续数字的相关文章

47. 数组中出现次数超过一半的数字[Number appears more than half times]

[题目]:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字. 例如长度为9的数组{1,2,3,2,2,2,5,4,2}中次数超过了数组长度的一半的数字为2,而长度为8的数组{1,2,3,2,2,2,5,4}则为非法输入. [思路一]:先对数组进行排序,再遍历排序后的数组,统计每个数的次数,出现次数最大的数即为要找的数. 时间复杂度:O(nlgn)+ O(n)= O(nlgn):空间复杂度:O(1). [思路二]:先对数组进行排序,出现次数超过数组长度的一半的数必然是数组中间的那个数.

js-找出能被两个给定参数和它们之间的连续数字整除的最小公倍数。

存档. 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. 1 function smallestCommons(arr) { 2 //分解质因数法,分解为若干个质数相乘 3 var arrratio=[]; 4 var l=0; 5 var min=Math.min(arr[0],arr[1]); 6 var max=Math.max(arr[0],arr[1]); 7 for(var i=min+1;i<max;i++){ 8 arr.push(i); 9 } 10 11 /* va

在论坛中出现的比较难的sql问题:22(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)

在论坛中看到一个帖子,帖子中有一些sql方面的面试题,我觉得这些面试题很有代表性. 原帖的连接为:http://bbs.csdn.net/topics/390884161?page=1#post-398177057 下面是我的解法,供大家参考: 1.分拆字符串 create table test1 (number varchar(100)) insert into test1 values ('1,2,3,4,5,6') 希望结果: number ------ 1 2 3 4 5 6 (6 行受

找出数组中最长的连续数字序列(JavaScript实现)

原始题目: 给定一个无序的整数序列, 找最长的连续数字序列. 例如: 给定[100, 4, 200, 1, 3, 2], 最长的连续数字序列是[1, 2, 3, 4]. 小菜给出的解法: 1 function maxSequence(array,step){ 2 var _array = array.slice(), //clone array 3 _step = 1, 4 _arrayTemp = [], 5 i = 0; 6 7 var parseLogic = { 8 //result c

poj 2100 尺取法 一个数字拆成连续数字平方和

题意:将一个数拆成若干个连续数字的平方和. 用尺取法枚举区间,复杂度为O(n),时限10s,3s多ac. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cmath> 5 using namespace std; 6 7 const int N = 100; 8 9 struct Node 10 { 11 int from, to; 12 } node[N]

vim生成连续数字列

功能描述:在vim中插入连续数字列 比如 1, 2, 3, 4, 5, ... 100, 命令:使用q命令录制自己的动作序列然后重复执行 准备工作: 首先输入起始数字,比如这里输入1和逗号,光标在当前行 动作序列如下: 1. normal模式下qa    即将动作记录放入寄存器a中,可以根据自己偏好使用寄存器 2. Y    复制整行 3. p    粘贴到下一行 4. f ,    向右查找到逗号, 5. h    光标右移一个字符 6. ctrl + a   数值加1 7. q    退出记

Solution 25: 最长连续数字子串

问题描述 在字符串中找出连续最长的数字串,并将该串返回.(略有修改) 解决思路 双指针法.一前一后,注意保存最长连续数字串的开始或者结束位置和最长串的长度,最后返回该子串即可. 程序 public class LongestContinuousDigits { public String getLCD(String s) { if (s == null || s.length() == 0) { return null; } int i = 0, j = 0; int maxLen = 0, l

输入字符串取出字符串中的连续数字放入单独数组

public class ShowsNum { public Map getNums(String str){ HashMap<Integer,String> map=new HashMap<Integer,String>(); char [] chnum=str.toCharArray(); StringBuffer strbuffer=new StringBuffer(); int des=1; for(int i=0;i<chnum.length;i++){ //当前字

python整合连续数字的练习,包含itertools\groupby用法

#汉字数字转阿拉伯数字 1 class ConvertNum: 2 def __init__(self,cnNum): 3 self.dict = {u'零':0,u'一':1,u'二':2,u'三':3,u'四':4,u'五':5,u'六':6,u'七':7,u'八':8,u'九':9,u'十':10,u'百':100,u'千':1000,u'万':10000} 4 self.cnNum = cnNum 5 6 def convert(self): 7 count = 0 8 result =