小编Jak*_*aas的帖子

找出因素的总和

为什么这段代码会返回一个数字因子的总和?

在几个Project Euler问题中,您被要求计算因子的总和作为问题的一部分.在那里的一个论坛上,有人发布了以下Java代码作为查找总和的最佳方式,因为你实际上不需要找到个别因素,只需要找到主要因素(你不需要知道Java,你可以跳到下面的摘要):

public int sumOfDivisors(int n)
{
    int prod=1;
    for(int k=2;k*k<=n;k++){
        int p=1;
        while(n%k==0){
            p=p*k+1;
            n/=k;
        }
        prod*=p;
    }
    if(n>1)
        prod*=1+n;
    return prod;
}
Run Code Online (Sandbox Code Playgroud)

现在,我已经尝试了很多次,我发现它有效.问题是,为什么?

说你因素100: 1,2,4,5,10,20,25,50,100.总和是217.主要因素分解是2*2*5*5.这个功能给你[5*(5+1)+1]*[2*(2+1)+1] = [25+5+1]*[4+2+1] = 217

保理8:1,2,4,8.总和是15.主要因素分解是2*2*2.这个功能给你[2*(2*(2+1)+1)+1]=15

该算法归结为(Fi用于表示因子F或F sub i的第i个索引):

return product(sum(Fi^k, k from 0 to Ni), i from 1 to m)
Run Code Online (Sandbox Code Playgroud)

其中m,唯一素因子Ni的数量是每个唯一因子在素数因子分解中出现的次数.

为什么这个公式等于因子的总和?我的猜测是,它等于通过分配属性的每个独特的素因子组合(即每个独特因子)的总和,但我不知道如何.

math sum factors number-theory

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

Plotly - 不同的颜色表面

我试图在Plotly for Python中绘制几个不同颜色的表面.

具体地,表面示出了用于在相空间中的不同点处采取动作的预测奖励函数.由于我在每个点都有几个可能的动作,每个动作都是不同的表面.我想要唯一地为每个表面着色,但不依赖于x,y或z坐标.

我试着在R中回答,但我无法弄清楚我做错了什么.我总是得到相同的蓝色.因为我在我的代码的其他部分使用PyPlot,所以我从默认的matplotlib表格中选择颜色.

这是玩具数据的基本示例.

import matplotlib.pyplot as plt
import numpy as np
import plotly.graph_objs as go
import plotly.offline as off

off.init_notebook_mode()

make_int = np.vectorize(int)
cmap = plt.get_cmap("tab10")

saddle = np.array([[x**2-y**2 for x in np.arange(-10,11)] for y in np.arange(-10,11)])
paraboloid = np.array([[x**2 + y**2-100 for x in np.arange(-10,11)] for y in np.arange(-10,11)])

mycolors_a = make_int(256*np.array(cmap(1)[0:3])).reshape((1, 1,-1)).repeat(21, axis = 0).repeat(21, axis =1)
mycolors_b = make_int(256*np.array(cmap(2)[0:3])).reshape((1, 1,-1)).repeat(21, axis = 0).repeat(21, axis =1)
trace_a = go.Surface(z = saddle, surfacecolor = …
Run Code Online (Sandbox Code Playgroud)

python python-3.x plotly jupyter-notebook

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

从源代码构建 Python 和 OpenSSL,但 ssl 模块失败

我正在尝试从容器中的源代码构建 Python 和 OpenSSL。两者似乎都构建正确,但 Python 没有成功创建_ssl模块。

我在网上找到了一些指南 其中提到取消 Python 中的注释和行3.X.X/Modules/Setup,并将--openssldir=/usr/local/ssl标志添加到./configureOpenSSL 的步骤中。我在我的 dockerfile 中执行这些操作。这导致在./configurePython 输出期间,我看到以下行。

checking for X509_VERIFY_PARAM_set1_host in libssl... yes
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

[91m*** WARNING: renaming "_ssl" since importing it failed: /usr/lib/x86_64-linux-gnu/libssl.so.1.1: version `OPENSSL_1_1_1' not found (required by build/lib.linux-x86_64-3.8/_ssl.cpython-38-x86_64-linux-gnu.so)
[0m[91m*** WARNING: renaming "_hashlib" since importing it failed: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: version `OPENSSL_1_1_1' not found (required by build/lib.linux-x86_64-3.8/_hashlib.cpython-38-x86_64-linux-gnu.so)
[0m
Python build finished successfully!
Run Code Online (Sandbox Code Playgroud)

...

Following modules built successfully but were removed because they …
Run Code Online (Sandbox Code Playgroud)

python linux ssl openssl docker

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