小编Jua*_*tro的帖子

在python中有大量因子

这是我对阶乘的方法:

def factorial(n):
    '''Returns factorial of n'''
    r = 1
    for i in range(1, n + 1):
        r *= i
    return r
Run Code Online (Sandbox Code Playgroud)

我认为这很简单,但我猜你可以提高效率,因为像100000这样的大数字需要很长时间.我的问题是,有吗?math.factorial()也不好,它花费的时间大致相同.

python algorithm factorial

8
推荐指数
4
解决办法
2万
查看次数

Ubuntu 13.10上的Gradle调用"成功完成,出现1个错误"

因此,在Ubuntu 13.04 64位上在Android Studio 0.5.2上创建新项目并尝试在物理设备上运行时,会出现以下错误:

Information:/home/juan/Documents/android-studio/sdk/build-tools/android-4.4.2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory 

Error:Execution failed for task ':app:mergeDebugResources'.
> Error: Failed to run command:
/home/juan/Documents/android-studio/sdk/build-tools/android-4.4.2/aapt s -i
/home/juan/AndroidStudioProjects/MyApplication4/app/build/exploded-aar/com.android.support/appcompat-v7/19.0.1/res/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png -o /home/juan/AndroidStudioProjects/MyApplication4/app/build/res/all/debug/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png
  Error Code:
    127
  Output:
    /home/juan/Documents/android-studio/sdk/build-tools/android-4.4.2/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在MacBook Pro上有相同的设置(AS 0.5.2),Gradle成功完成,没有任何错误,所以一定有问题.我还必须安装32位版本的几个库才能让adb在我的64位Ubuntu上运行.也许那是怎么回事?任何帮助,将不胜感激.

编辑还尝试安装以下库:

$sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5
Run Code Online (Sandbox Code Playgroud)

没运气.

ubuntu android gradle android-studio

8
推荐指数
1
解决办法
3127
查看次数

在Python中对一个数字进行分解

这是我的代码:

def factorize(n):
    sieve = [True] * (n + 1)

    for x in range(2, int(len(sieve) ** 0.5) + 1):
        if sieve[x]: 
            for i in range(x + x, len(sieve), x):
                sieve[i] = False

lowerPrimes = i for i in range(2, len(sieve)) if sieve[i]] and (n % i == 0)]
return lowerPrimes
Run Code Online (Sandbox Code Playgroud)

factorize(n)返回给定值的所有素因子n.正如你所看到的,它首先制作一个Eratosthenes筛子n,然后使用列表理解来返回筛子中所有值的因子n.它为此目的工作得相对较好,但是,我希望它返回一个列表,这样如果你将其中的每个项目相乘,结果就是n.你明白了吗?

例如,factorize(99020)返回[2, 5, 4951],但我希望它返回[2, 2, 5, 4951],如2*2*5*4951 = 99020.

我知道我的方法甚至不是很接近,但你能帮助我做到这一点吗?

python primes loops sieve-of-eratosthenes prime-factoring

4
推荐指数
2
解决办法
8264
查看次数

使用 npm 安装模块时出现符号链接错误

我正在尝试全局安装 nodemon 但出现以下错误:

npm ERR! Darwin 15.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "nodemon"
npm ERR! node v5.10.1
npm ERR! npm  v3.8.3
npm ERR! path ../lib/node_modules/nodemon/bin/nodemon.js
npm ERR! code EPERM
npm ERR! errno -1
npm ERR! syscall symlink

npm ERR! Error: EPERM: operation not permitted, symlink '../lib/node_modules/nodemon/bin/nodemon.js' -> '/usr/local/bin/nodemon'
npm ERR!     at Error (native)
npm ERR!  { [Error: EPERM: operation not permitted, symlink '../lib/node_modules/nodemon/bin/nodemon.js' -> '/usr/local/bin/nodemon']
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'symlink',
npm …
Run Code Online (Sandbox Code Playgroud)

macos node.js npm

3
推荐指数
1
解决办法
6639
查看次数

For循环在while循环中断开

这是我的代码:

primes = [2, 3]

while len(primes) != 1001:
    a = primes[-1] + 2
    for i in primes:
        if a % i == 0:
            break
    else:
        print(primes)
        primes.append(a)

print(primes[1002])
Run Code Online (Sandbox Code Playgroud)

这应该创建一个列表,直到第1001个素数,然后打印第1001个数字.它首先取列表中的最后一个数字并加2,然后检查给定数字是否可被素数列表的任何成员整除.如果它是可整除的,则for循环中断并跳过else子句.如果不是,则将该数字附加到素数列表.重复该过程,直到列表的长度为1001.循环结束后,将打印最后一个数字.

但是,输出如下:

[2, 3]
[2, 3, 5]
_
Run Code Online (Sandbox Code Playgroud)

并且在手动执行之前程序不会终止.你能告诉我我做错了什么吗?

python if-statement break

1
推荐指数
1
解决办法
119
查看次数