输入一个正整数 从小到大输出他的所有因子

这我写的代码有问题 我输入56只出现1 2 各位帮我看看改一下。不知道哪错了

img

不知道你是怎么操作的,按这个代码,我在Python自带的IDLE运行是没问题的。

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7591148
  • 这篇博客你也可以参考下:查看无法通过右键查看源码的网页源代码
  • 除此之外, 这篇博客: 向量的几种距离计算方法中的 4.把距离归一化,然后画出来 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • g1=ou1/max(ou1)
    print("欧氏距离归一化:",g1)
    
    g2=man/max(man)
    print("曼哈顿距离归一化:",g2)
    
    g3=qie/max(qie)
    print("切比雪夫距离归一化:",g3)
    
    g4=cos/max(cos)
    print("余弦距离归一化:",g4)
    
    # 1.欧氏距离:蓝色线
    plot(power, g1, 'b.')
    plot(power[:5], g1[:5],color='b')
    
    
    # 2.曼哈顿距离:红色线
    plot(power, g2, 'r.')
    plot(power[:5],g2[:5],color='r')
    
    # 3.切比雪夫距离:黄色线
    plot(power, g3, 'y.')
    plot(power[:5], g3[:5],color='y')
    
    # 4.夹角余弦距离:黑色线
    plot(power, g4, 'k.')
    plot(power[:5], g4[:5],color='k')
    
    title('Vector distance')
    plt.show()
    

    完整代码:

    import numpy as np
    import numpy
    from numpy import *
    from PIL import Image
    from pylab import *
    from sklearn import preprocessing
    from scipy.spatial.distance import pdist
    from itertools import chain
    
    a=numpy.random.randint(-20,high=160,size=(1,30))   #随机均匀分布
    a=a/1000
    A=[]
    for i in range(30):
        for b in a:
            c='%.3f' %b[i]
            A.append(float(c))
    print(A)
    
    ou1=[]
    man = []
    qie=[]
    cos=[]
    power=[0.005,0.006,0.007,0.008,0.009]
    for n in range(5):
        B = []
        for i in A:
            random2 = numpy.random.randn()  #随机正态分布
            a = i+random2/1000*power[n]
            a='%.6f' %a
            B.append(float(a))
        # print(B)
    
        vector1 = mat(A)
        vector2 = mat(B)
    
        print("第" + str(n+1) + "次距离计算")
        # 1.欧式距离
        ou = numpy.sqrt(numpy.sum(numpy.square(vector1 - vector2)))
        ou1.append(ou)
        print('欧氏距离:', ou)
    
        # 2.曼哈顿距离
        manhadun = sum(abs(vector1 - vector2))
        man.append(manhadun)
        print("曼哈顿距离:", manhadun)
    
        # 3.切比雪夫距离
        qbxf = abs(vector1 - vector2).max()
        qie.append(qbxf)
        print("切比雪夫距离:", qbxf)
    
        # 4.夹角余弦距离
        n1 = np.squeeze(np.asarray(vector1))
        n2 = np.squeeze(np.asarray(vector2))
        cos1 = dot(n1, n2) / (linalg.norm(n1) * linalg.norm(n2))
        cos.append(cos1)
        print("夹角余弦距离:", cos1)
        print("-----------------------------")
    
    g1=ou1/max(ou1)
    print("欧氏距离归一化:",g1)
    
    g2=man/max(man)
    print("曼哈顿距离归一化:",g2)
    
    g3=qie/max(qie)
    print("切比雪夫距离归一化:",g3)
    
    g4=cos/max(cos)
    print("余弦距离归一化:",g4)
    
    # 1.欧氏距离:蓝色线
    plot(power, g1, 'b.')
    plot(power[:5], g1[:5],color='b')
    
    
    # 2.曼哈顿距离:红色线
    plot(power, g2, 'r.')
    plot(power[:5],g2[:5],color='r')
    
    # 3.切比雪夫距离:黄色线
    plot(power, g3, 'y.')
    plot(power[:5], g3[:5],color='y')
    
    # 4.夹角余弦距离:黑色线
    plot(power, g4, 'k.')
    plot(power[:5], g4[:5],color='k')
    
    title('Vector distance')
    plt.show()
    

    结果显示:
    在这里插入图片描述
    在这里插入图片描述
    由于获取的向量为随机值,所以每次运行得到的图都是不一样的

  • 您还可以看一下 张长志老师的大白话学懂机器学习与推荐系统实战课程中的 016_机器学习模型和算法_线性回归(下)小节, 巩固相关知识点