python 编程练习——吉尔布雷斯的有趣猜测

Python YX ⋅ 于 2020-05-20 14:21:15 ⋅ 最后回复由 Edwin 2020-07-25 10:15:42 ⋅ 259 阅读
吉尔布雷斯的有趣猜测

用python打印出如下图三角形

file
file

参考文献

单墫老师教你学数学 趣味数论

成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • JanetZ
    2020-05-21 11:46:45
    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]
           [1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4, 6, 6, 2] 
             [1, 0, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 4] 
               [1, 2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 4] 
                 [1, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2] 
                   [1, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 2, 0] 
                     [1, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2] 
                       [1, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0] 
                         [1, 2, 2, 2, 2, 2, 2, 2, 0, 0] 
                           [1, 0, 0, 0, 0, 0, 0, 2, 0] 
                             [1, 0, 0, 0, 0, 0, 2, 2] 
                               [1, 0, 0, 0, 0, 2, 0] 
                                 [1, 0, 0, 0, 2, 2] 
                                   [1, 0, 0, 2, 0] 
                                     [1, 0, 2, 2] 
                                       [1, 2, 0] 
                                         [1, 2] 
                                           [1] 
  • YX MOD
    2020-05-21 12:04:30

    @JanetZ
    你是用算法实现的吗?贴下代码

  • JanetZ
    2020-05-21 14:00:50
    import numpy as np
    numbers = np.arange(1,65)
    length = len(numbers)
    n_max = int(np.sqrt(length))
    is_prime = np.ones(length,dtype = bool)
    is_prime[0] = False
    for i in range(2,n_max):
        if i in numbers[is_prime]:
            is_prime[(i**2-1)::i] = False
    prime = numbers[is_prime].tolist()
    print(prime,end="")
    row=[]
    result=[]
    for j in range(len(prime)):
        for i in range(len(prime)-1):
            row.append(np.abs(prime[i]-prime[i+1]))
        prime = row
        result.append(prime)
        if len(row) < 2 :
            break
        else:
            row = []
    r = 4
    for i in result:
        print("\n" + (2*r-1) * " " + str(i),end=" ")
        r += 1
  • Edwin
    2020-07-25 10:15:42

    C语言实现效果:

    file

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int isPrime(int n) 
    { 
        static int d=2; 
        return n<d*d ? (d=2,1): n%d ? (d+=1+(d>2),isPrime(n)) : (d=2,0); 
    } 
    
    int main(int argc, char *argv[])
    {
        int n=0,index=0;
        scanf("%d",&n);
    
        int array[n];
        for(int i=2; ;i++)
        {
            if(isPrime(i)){
                array[index]=i;
                index++;
            }
            if(index==n)
            break;
        }
    
        for(int i=0;i<n;i++)
        printf("%d ",array[i]);
    
        for(int i=0;i<n;i++){
            printf("\n");
            for(int j=0;j<n-1-i;j++){
                array[j]=abs(array[j+1]-array[j]);
            }
            for(int k=0;k<=i;k++){
                printf(" ");
            }
            for(int j=0;j<n-1-i;j++){
                printf("%d ",array[j]);
            }
    
        }
        return 0;
    }
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter