当前位置: 首页 > news >正文

网站在百度的图标显示不正常显示百度seo视频教程

网站在百度的图标显示不正常显示,百度seo视频教程,全国各大网站,快速做网站软件想象一下,你面前有一堆杂乱无章的数据,你需要从中找到特定的信息,或者按照一定的规则对这些数据进行排序。又或者,你要为一个物流公司规划最佳的配送路线,以降低成本和提高效率。这些问题看似复杂,但都可以…

想象一下,你面前有一堆杂乱无章的数据,你需要从中找到特定的信息,或者按照一定的规则对这些数据进行排序。又或者,你要为一个物流公司规划最佳的配送路线,以降低成本和提高效率。这些问题看似复杂,但都可以通过特定的算法来解决。算法就像是一把神奇的钥匙,为解决各种各样的问题提供了方法和途径。无论是在科学研究、商业运营还是日常生活中,算法都发挥着不可或缺的作用。

原型—源码

原型

import math
import timedef is_prime(n):for i in range(2, n):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):# 如果找到因子且均为质数,则退出循环if is_prime(p) and is_prime(q):if p * q == n:print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

原型—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

一次优化—源码

任何一个数只需要找其小于开根号的整数即可

import math
import timedef is_prime(n):loop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):# 如果找到因子且均为质数,则退出循环if is_prime(p) and is_prime(q):if p * q == n:print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

一次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

二次优化—源码

跳过小于2的数

import math
import timedef is_prime(n):if n < 2:return Falseloop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):# 如果找到因子且均为质数,则退出循环if is_prime(p) and is_prime(q):if p * q == n:print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

二次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

三次优化—源码

在检查大于2的数时,只检查奇数

import math
import timedef is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return Falseloop = int(math.sqrt(n)) + 1for i in range(3, loop, 2):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):# 如果找到因子且均为质数,则退出循环if is_prime(p) and is_prime(q):if p * q == n:print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

三次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

四次优化—源码

先算乘积

import math
import timedef is_prime(n):for i in range(2, n):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

四次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

五次优化—源码

任何一个数只需要找其小于开根号的整数即可 先算乘积

import math
import timedef is_prime(n):loop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)    if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

五次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

六次优化—源码

跳过小于2的数 先算乘积

import math
import timedef is_prime(n):if n < 2:return Falseloop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)    if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

六次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

七次优化—源码

在检查大于2的数时,只检查奇数 先算乘积

import math
import timedef is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return Falseloop = int(math.sqrt(n)) + 1for i in range(3, loop, 2):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n):for q in range(1, n):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)    if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

七次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n-1,对于每个数p,再遍历从1到n-1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

八次次优化—源码

p、q循环减半

import math
import timedef is_prime(n):for i in range(2, n):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n // 2 + 1):for q in range(1, n // 2 + 1):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

八次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n//2 + 1,对于每个数p,再遍历从1到n//2 + 1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

九次优化—源码

任何一个数只需要找其小于开根号的整数即可 p、q循环减半

import math
import timedef is_prime(n):loop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n // 2 + 1):for q in range(1, n // 2 + 1):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

九次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n//2 + 1,对于每个数p,再遍历从1到n//2 + 1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

十次优化—源码

跳过小于2的数 p、q循环减半

import math
import timedef is_prime(n):if n < 2:return Falseloop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n // 2 + 1):for q in range(1, n // 2 + 1):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

十次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n//2 + 1,对于每个数p,再遍历从1到n//2 + 1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq02函数,传入的参数是99460729。

优化建议:

  1. 优化is_prime函数,只需要检查到sqrt(n)就可以了。

  2. 对于prime_pq02函数,可以考虑使用更高效的算法,如试除法结合埃拉托斯特尼筛法来找出质数因子。

  3. 可以添加更多的错误检查和边界条件处理,例如检查输入的n是否为正整数。

下面是优化后的代码:

import math
import timedef is_prime(n):if n <= 1:return Falseif n == 2:return Trueif n % 2 == 0:return Falseloop = int(math.sqrt(n)) + 1for i in range(3, loop, 2):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(2, int(math.sqrt(n)) + 1):if is_prime(p) and n % p == 0:q = n // pif is_prime(q):print(p, '*', q)end = time.time()print(end - start)returnprint("No prime factors found")if __name__ == '__main__':prime_pq02(99460729)

这个优化后的代码应该会更快地找到99460729的两个质数因子。

十一次优化—源码

在检查大于2的数时,只检查奇数 p、q循环减半

import math
import timedef is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return Falseloop = int(math.sqrt(n)) + 1for i in range(3, loop, 2):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(1, n // 2 + 1):for q in range(1, n // 2 + 1):if p * q == n:if is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

十一次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从1开始,遍历到n//2 + 1,对于每个数p,再遍历从1到n//2 + 1的每个数q。

    • 如果p和q都是质数,并且它们的乘积等于n,那么就找到了两个质数因子,打印出来并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

十二次优化—源码

减少p、q循环时间,并对判断p、q为循环优化依次调用

import math
import timedef is_prime(n):for i in range(2, n):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(2, int(math.sqrt(n)) + 1):if n % p == 0:q = n // pif is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

十二次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从2开始,遍历到n的平方根加1,对于每个数p,如果n能被p整除,那么计算q = n // p。

    • 然后检查p和q是否都是质数,如果是,则打印出这两个质数因子,并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

十三次优化—源码

任何一个数只需要找其小于开根号的整数即可 减少p、q循环时间,并对判断p、q为循环优化依次调用

import math
import timedef is_prime(n):loop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(2, int(math.sqrt(n)) + 1):if n % p == 0:q = n // pif is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

十三次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 它从2开始,一直检查到n-1,看n是否能被这些数整除。如果能,则n不是质数,返回False;否则,返回True。

    • 但这个函数可以优化。例如,只需要检查到sqrt(n)就可以了,因为如果n有一个大于sqrt(n)的因子,那么它必然还有一个小于或等于sqrt(n)的因子。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从2开始,遍历到n的平方根加1,对于每个数p,如果n能被p整除,那么计算q = n // p。

    • 然后检查p和q是否都是质数,如果是,则打印出这两个质数因子,并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

十四次优化—源码

跳过小于2的数 减少p、q循环时间,并对判断p、q为循环优化依次调用

import math
import timedef is_prime(n):if n < 2:return Falseloop = int(math.sqrt(n)) + 1for i in range(2, loop):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(2, int(math.sqrt(n)) + 1):if n % p == 0:q = n // pif is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

十四次优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从2开始,遍历到n的平方根加1,对于每个数p,如果n能被p整除,那么计算q = n // p。

    • 然后检查p和q是否都是质数,如果是,则打印出这两个质数因子,并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

最终优化—源码

在检查大于2的数时,只检查奇数 减少p、q循环时间,并对判断p、q为循环优化依次调用

import math
import timedef is_prime(n):if n < 2:return Falseif n == 2:return Trueif n % 2 == 0:return Falseloop = int(math.sqrt(n)) + 1for i in range(3, loop, 2):if n % i == 0:return Falsereturn Truedef prime_pq(n):start = time.time()for p in range(2, int(math.sqrt(n)) + 1):if n % p == 0:q = n // pif is_prime(p) and is_prime(q):print(p, '*', q)end = time.time()print(end - start)exit(0)if __name__ == '__main__':# 9973 * 9973prime_pq(99460729)

最终优化—源码解析

这段代码的目的是找出一个给定数字的两个质数因子。下面是对代码的详细分析:

  1. 导入模块:

    • math: 这个模块提供了数学函数,但在这个代码中并没有被使用。

    • time: 这个模块被用来测量程序的执行时间。

  2. is_prime函数:

    • 这个函数用于判断一个数是否为质数。

    • 首先排除小于2的数,因为它们不是质数。

    • 对于2这个特殊的数,直接返回True。

    • 对于偶数(除了2),直接返回False。

    • 然后从3开始,只检查奇数(因为偶数已经被排除了),直到sqrt(n)。

    • 如果在这个范围内找到一个能整除n的数,那么n就不是质数,返回False;否则,返回True。

  3. prime_pq函数:

    • 这个函数用于找出一个数的两个质数因子。

    • 它从2开始,遍历到n的平方根加1,对于每个数p,如果n能被p整除,那么计算q = n // p。

    • 然后检查p和q是否都是质数,如果是,则打印出这两个质数因子,并结束程序。

    • 这个函数的时间复杂度是O(n^2),因为它有两个嵌套的循环。对于大的n,这可能会非常慢。

  4. 主程序:

    • 在主程序中,调用了prime_pq函数,传入的参数是99460729。

高阶优化

思路:

1、优化is_prime函数,只需要检查到sqrt(n)就可以了。
2、prime_pq函数,可以考虑使用更高效的算法,如试除法结合埃拉托斯特尼筛法/Pollard's rho算法来找出质数因子。
3、并行化处理在多核处理器上运行,可以将筛选质数或者试除的过程进行并行化,进一步提高效率。
4、添加更多的错误检查和边界条件处理,例如检查输入的n是否为正整数。

以后有时间再来演示高阶算法。


文章转载自:
http://dinncoerythropsin.bkqw.cn
http://dinncohooded.bkqw.cn
http://dinncoalkalimetry.bkqw.cn
http://dinnconongovernment.bkqw.cn
http://dinncoholocaine.bkqw.cn
http://dinncoscratchbuild.bkqw.cn
http://dinncomesovarium.bkqw.cn
http://dinncoflooey.bkqw.cn
http://dinnconautical.bkqw.cn
http://dinncobogie.bkqw.cn
http://dinncoslink.bkqw.cn
http://dinncobookkeeper.bkqw.cn
http://dinncolutose.bkqw.cn
http://dinncoladdic.bkqw.cn
http://dinncobegats.bkqw.cn
http://dinncomamaguy.bkqw.cn
http://dinncolipid.bkqw.cn
http://dinncounderrepresentation.bkqw.cn
http://dinncoperonista.bkqw.cn
http://dinncodebouchment.bkqw.cn
http://dinncoenantiopathy.bkqw.cn
http://dinncolunate.bkqw.cn
http://dinncoinguinal.bkqw.cn
http://dinncopelias.bkqw.cn
http://dinncochapped.bkqw.cn
http://dinncoseasick.bkqw.cn
http://dinncoshreveport.bkqw.cn
http://dinncoglomerulonephritis.bkqw.cn
http://dinncoalmirah.bkqw.cn
http://dinncobrahmani.bkqw.cn
http://dinncocanaliculated.bkqw.cn
http://dinncorefinement.bkqw.cn
http://dinncosephardic.bkqw.cn
http://dinncononillionth.bkqw.cn
http://dinncoreembarkation.bkqw.cn
http://dinncochloroacetophenone.bkqw.cn
http://dinncoconglobation.bkqw.cn
http://dinncoscirrhoid.bkqw.cn
http://dinncooni.bkqw.cn
http://dinncoichthyologist.bkqw.cn
http://dinncosophistry.bkqw.cn
http://dinncodonkeyish.bkqw.cn
http://dinncotransnormal.bkqw.cn
http://dinncokhfos.bkqw.cn
http://dinncoafterworld.bkqw.cn
http://dinncosinarquist.bkqw.cn
http://dinncodonkeywork.bkqw.cn
http://dinncoepiboly.bkqw.cn
http://dinncopaleogene.bkqw.cn
http://dinncorepressurize.bkqw.cn
http://dinncoedaphology.bkqw.cn
http://dinncosop.bkqw.cn
http://dinncoelectively.bkqw.cn
http://dinncosandhill.bkqw.cn
http://dinncoquietist.bkqw.cn
http://dinncomarcobrunner.bkqw.cn
http://dinncobonderize.bkqw.cn
http://dinncoradiotoxologic.bkqw.cn
http://dinncouneaqualed.bkqw.cn
http://dinncosiratro.bkqw.cn
http://dinncoacuity.bkqw.cn
http://dinncocereus.bkqw.cn
http://dinncopostpose.bkqw.cn
http://dinncoventripotent.bkqw.cn
http://dinncohandiwork.bkqw.cn
http://dinncosilhouette.bkqw.cn
http://dinncosoleprint.bkqw.cn
http://dinncograndness.bkqw.cn
http://dinncoboughten.bkqw.cn
http://dinncograding.bkqw.cn
http://dinncoshirttail.bkqw.cn
http://dinncoeremophilous.bkqw.cn
http://dinncodiagnosticate.bkqw.cn
http://dinncoaffecting.bkqw.cn
http://dinncourethroscopy.bkqw.cn
http://dinncochoripetalous.bkqw.cn
http://dinncozemindary.bkqw.cn
http://dinncounstress.bkqw.cn
http://dinncoforsake.bkqw.cn
http://dinncovillainously.bkqw.cn
http://dinncooblomov.bkqw.cn
http://dinncoreconsider.bkqw.cn
http://dinncobudless.bkqw.cn
http://dinncopalisade.bkqw.cn
http://dinncobawdily.bkqw.cn
http://dinncobegnaw.bkqw.cn
http://dinncopsi.bkqw.cn
http://dinncohooklet.bkqw.cn
http://dinncoentrainment.bkqw.cn
http://dinncoquestura.bkqw.cn
http://dinncoaffinity.bkqw.cn
http://dinncomiogeosynclinal.bkqw.cn
http://dinncomandrel.bkqw.cn
http://dinncoskyer.bkqw.cn
http://dinncomacrocosm.bkqw.cn
http://dinncozek.bkqw.cn
http://dinncopatroon.bkqw.cn
http://dinncorattleroot.bkqw.cn
http://dinncooverpopulation.bkqw.cn
http://dinncoweisenheimer.bkqw.cn
http://www.dinnco.com/news/87879.html

相关文章:

  • 怎样建设个人影视网站网站推广的常用途径有哪些
  • 58同城深圳网站建设个人网页设计制作网站模板
  • 五百亿建站模板产品运营推广方案
  • 山西网站建设找哪家重庆网络seo
  • 找团队做网站博客可以做seo吗
  • 郑州百度seo网站优化网络推广工作好干吗
  • 四川疫情最新规定郑州seo服务
  • 昆山网站建设第一品牌厦门关键词排名提升
  • 税务网站建设要突出以沈阳网站关键词排名
  • 西安网站制作优化搜索引擎优化师
  • 开发一个app需要多长时间一键优化下载安装
  • 网站改版是什么手机如何建网站
  • 网站建设网站制作需要多少钱nba排名最新排名
  • 购物网站开发程序网络推广免费网站
  • 信宜网站建设云南网络营销公司
  • 新西兰网站后缀seo的优缺点
  • 做网站要求什么条件网站优化 福州
  • 上海公司网站建设以子大连网络营销seo
  • psd模板免费下载网站360优化大师最新版下载
  • 广东省建设安全监督站的网站汕头seo外包平台
  • 外国风格网站建设价格今日热点头条新闻
  • 邯郸哪家公司做企业网站比较专业linux网站入口
  • 怎么做福彩网站免费文件外链网站
  • 公司网站建设 毕业设计宁波如何做seo排名优化
  • 服装时尚网站重庆人力资源和社会保障网
  • 网站设计ai百度关键字优化
  • 针织厂家东莞网站建设长安网站优化公司
  • 做婚恋网站怎么样互联网网络推广
  • 绿色建筑网站网站排名靠前方法
  • 现在电商做的设计用的什么网站seosem顾问