鱼C论坛

 找回密码
 立即注册
查看: 1577|回复: 6

关于python是不是计算量太大就计算不出来

[复制链接]
发表于 2019-4-13 20:05:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我写了个求质数的程序,大致就是从100中找出2个质数且他们的积为15。
程序如下:
num=100
while num:
    flag=0
    for i in range(1,num+1):
        if num%i==0:
            flag+=1
   
    if flag==2:
      num1=num-1
      while num1:
        for i in range(1,num):
          if num1%i==0:
             flag+=1
        if (flag==4) and (num1*num==15):
            print(num1,num)
        
        num1-=1
        flag=2
    num-=1
这样的算法是可以算出3和5是所求的数。但是当我改变num的值时,
比如我想从1000里找出,或者10000里找出2个质数且他们的积为15的两个数
那么发现他运行很久都运行不出3和5这两个结果。
但num的值改小一点就能找出。
那么是不是说明,当计算量过大,python是计算不过来的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-13 20:11:07 | 显示全部楼层
你的时间复杂度太高了,只能说你让计算机干了很多累活还几乎是白干,2while 2for 几乎是O(n4)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 20:35:53 | 显示全部楼层
      楼主求素数的方法有问题,试试我的代码,打印 1000000 以内的所有素数也就是一瞬间的事情:
  1. import math

  2. num = 1000000
  3. c = 0
  4. fp = open('ss.txt' , 'w')
  5. for n in range(2 , num):
  6.     f = True
  7.     for x in range(2 , int(math . sqrt(n)) + 1):
  8.         if(not(n % x)):
  9.             f = False
  10.             break
  11.     if f:
  12.         s = '%6d' % n
  13.         if not(c % 5):
  14.             if c > 0:
  15.                 s = '\n' + s
  16.         else:
  17.             s = ' , ' + s
  18.         fp . write(s)
  19.         c += 1
  20. fp . close()
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-13 20:56:21 | 显示全部楼层
jackz007 发表于 2019-4-13 20:35
楼主求素数的方法有问题,试试我的代码,打印 1000000 以内的所有素数也就是一瞬间的事情:

emmmmm不是打印1000内素数,是找出100000以内乘积为15的素数,比如3和5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 21:07:19 | 显示全部楼层
  1. num = 1000000
  2. results = ''
  3. for i in range(2, num+1):
  4.     n = i // 2
  5.     while n > 1:
  6.         if i % n == 0:
  7.             break
  8.         n -= 1
  9.     else:
  10.         results += str(i) + ' '

  11. print('100以内的质数有:%s' % results)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 21:15:28 | 显示全部楼层
本帖最后由 jackz007 于 2019-4-13 21:57 编辑
涤生。 发表于 2019-4-13 20:56
emmmmm不是打印1000内素数,是找出100000以内乘积为15的素数,比如3和5


    你就是在 8 亿以内找它不也是 3 x 5 吗,难道还有其它可能?

    关于这道题,楼主需要做的其实应该是对 15 分解质因数!而不是要在多大的范围内去寻找所谓的质数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-13 22:02:52 | 显示全部楼层
涤生。 发表于 2019-4-13 20:56
emmmmm不是打印1000内素数,是找出100000以内乘积为15的素数,比如3和5

你把所素数找出来再找积为15的会好一点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-15 06:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表