📜  最小的数只有 4 个除数,最多有两个差 D(1)

📅  最后修改于: 2023-12-03 14:55:22.281000             🧑  作者: Mango

最小的数只有 4 个除数,最多有两个差 D

简介

本题要求找出一个最小的正整数,其只有 4 个除数,且任意两个连续的整数之间的差不超过 D。

解题思路
1. 找满足条件的最小的数

一个正整数的因数个数可以从它的因数分解式中得到。例如,$12=2^2\times3$,所以 12 的因数个数为 $(2+1)(1+1)=6$。如果一个正整数只有 4 个因数,那么它必须是如下三种情况中的一种:

  1. $p^3$,其中 $p$ 是质数;
  2. $p\times q$,其中 $p$ 和 $q$ 均为质数;
  3. $p\times r^2$,其中 $p$ 和 $r$ 均为质数。

我们可以试着从最小的质数 2 开始枚举,找到第一个满足条件的数。

2. 判断差是否不超过 D

我们可以从 2 开始枚举,判断当前数和上一个数之间的差是否超过了 D。如果超过了,那么就从上一个数加上 D 开始继续枚举。

代码实现(Python)
import math

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(math.sqrt(n))+1):
        if n % i == 0:
            return False
    return True

def find_num_with_4_divisors(D):
    num = 2
    while True:
        if is_prime(num):
            if is_prime(num+D):
                if is_prime((num+2*D)**2-4):
                    return num*(num+D)
            num += 1
        else:
            num += 1
时间复杂度

本算法采用了从 2 开始枚举的方式,时间复杂度为 $O(n)$,其中 n 为满足条件的数的个数。但由于满足条件的数很少,因此实际运行时间很短。