这是我对阶乘的方法:
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()也不好,它花费的时间大致相同.
因此,在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)
没运气.
这是我的代码:
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.
我知道我的方法甚至不是很接近,但你能帮助我做到这一点吗?
我正在尝试全局安装 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) 这是我的代码:
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)
并且在手动执行之前程序不会终止.你能告诉我我做错了什么吗?