杨辉三角(附html,Python,c++杨辉三角代码)

news2024/11/18 21:50:11

1、前言

杨辉三角很早学编程就知道,但不知道杨辉是古人!

一次偶然的机会,和杨辉三角对上了眼神——杨辉!究竟你是怎么发现杨辉三角的呢?

于是经过了长达3个月锲而不舍的探究。

终究也没发现自己想要的最终结果。

不过也还有有一点点小的收获——今闻三角。

我满怀信心的以为自己发现了一片奥区和大家分享,却没想给数学吧封贴了。

所以才想起在知乎来。果然非常贴心,居然自动邀请我写一下感想。

本来我都是没有任何重写的激情和信心,不过既然它这么盛情,我就再试一番吧。

2、今闻三角的规则

问题是围绕杨辉三角的由来而展开。

所以把杨辉三角进行两个处理:

1、有生于无。

2、数生于0,值极于九。

第一条,则用0开始生成杨辉三角,其实后来发现许多人都是这样处理的。

第二条,使用模运算,使得杨辉三角的最大数为9。

其他和杨辉三角完全一致。

按照这个想法在excel上一列,居然发现有点和自己想象的意外,却发现是自己计算错了。

于是就干脆写代码来生成。

这一来,果然一发不可收拾。

3、今闻三角的0聚现象

当时花费这么多心里的关键是今闻三角的一个奇特现象——0聚合。

就是整个今闻三角出现了成片的三角0。

当时以为有规矩可循,结果唯一找到的就是物极必反——由盛及衰!

4、各种进制的奇特差异

当时忽然萌生一个想法,转换为二进制会是如何?

于是,就逐一尝试,甚至最后搞到最大25进制。

由此才发现杨辉三角和素数的一些关联,于是又转头去啃素数。

二进制,太规则了

三进制,像一个三叶风轮

四进制,花了许多,却是规则分形

五进制,出奇的规则

六进制,出奇的凌乱,却和十进制相似

七进制,又很听话,让人想起了素数

八进制,似乎是四进制的扩展

九进制,虚虚实实,非常美

就这么一眼瞅上去,有几个明显的结论:

第一:所有进制的0三角聚合,大体是三个角虚,中间实,实现分形效果。

第二:六进制和十进制比较特殊,当数据达到1W,也没出现分形!

第三:素数的图形格外奇特,就是从1个一直排到N-1个。

5、素数和杨辉

对于素数进制的今闻三角图谱,这种最直观的猜测确实是对的。

后来经过对照杨辉三角的通项公式,发现确实如此

——素数纬今闻三角的底边除了两头为1,全是0!

而其前一行,竟然全是1!

本以为这个用来检测素数很快,结果算法复杂度依旧。

不过另外一个特殊现象却似乎很管用,就是素数纬的今闻三角其第二斜边可定不为0!

果然,用这个方法求取1亿的素数快了很多。

后来想突破一下大数据,因为用java的big类型,对象构造很慢,发现效果很不理想,只好作罢。

接着还是不甘心,开始又一个漫长而又艰难的探索。

6、中数通项公式

以前编程只是写出10以内的杨辉三角,而且后面数据很大,所以不甚在意。

这次通过今闻三角的简化,和有了探索的动力,最大把数据调到2W!

以前数学家绞尽脑汁个把月时间才能算出来的,程序几秒钟就把所有数据完全呈现!

这个最笨的办法,如今似乎却是最有效的了。

经过这一番周折,决定走一条捷径,又回到杨辉三角,看它和素数的关联何在。

我的目标是盯在了一个我自己起的叫中数的地方!

首先发现了杨辉三角隐藏的一个特性——均衡性。

就是把杨辉三角折叠,发现其重叠两数乘积的和居然是一个固定值——中数!

哈哈,这个也是太无望的时候,想起了高斯大人的妙法。

中数

特别的,对折线的数的平方和就是该中数!

在我的预感中,该中数就是整个杨辉三角的灵魂和缩影!

所以素数纬的杨辉三角的中数必然和该素数有着奇特的关系。

在漫无涯际的苦苦求索中,亦然无果,没有找到中数的通项公式!

想到的所有算法其复杂度都一样,还真省不过去。

不过有几个发现也算是比较欣慰。

这个似乎是目前杨辉三角最全的公式

这个是杨辉三角相邻两列的比值

这个是杨辉三角相邻两行的比值

7、素数判定

奇怪,为何没有求余运算符?

打不动了,偷个懒吧,网上发现素数的定义是用威尔逊的定理来的。

用中数判断素数的方法很简单,代码就几句话,但是中数计算却是麻烦,大数据也很慢,就不贴代码了。

这个就是杨辉三角判断素数的法则

当时好像自己证明过,但是找不到了。

8、素数间隔

为了这个素数还真煞费苦心,来去折腾还真是没有通项公式。

所以自己就提出了个两仪体系的概念来安慰自己。

不过也是发现一个奇特的现象,就是两个相邻素数,之间隔6的概率最大。

而且其6倍的概率也远远高出其他值。

似乎隐隐约约觉得这个分布和杨辉三角有关系。

素数间隔6倍法则

这个是1亿的数据,我的电脑太旧,撑不到2亿的运算,1亿多的没记结果看走向也是如此。

9、异想天开

当时自己的感觉是找到了打通东西方文化的桥梁,所以着实飘了一阵子。

杨辉三角从西方的视角是被世人所承认,这个必须承认,因为人家帕斯卡都这么认为的。

但是从东方的视觉,似乎人们从未去思考过为什么。

我一直认为,就如同数学上一次一次的扩展,从整数到小数,从有理数到无理数,从实数到虚数……

这个路肯定没有到终点,西方的数理逻辑或许只是一个目前很高光的分支,

而它的另一支,却在至暗的历史长河里淹没着——这个就是东方数理逻辑。

或许杨辉三角就是一个窗口。

 下面是html杨辉三角:

<!DOCTYPE html>
<html>

<head>
    <title>杨辉三角</title>
    <style>
        table {
            margin: auto;
            border-collapse: collapse;
        }

        table td {
            width: 30px;
            height: 30px;
            text-align: center;
            border: 1px solid black;
        }
    </style>
</head>

<body>
    <script>
        function generateTriangle(rows) {
            var triangle = [];
            for (var i = 0; i < rows; i++) {
                triangle[i] = [];
                for (var j = 0; j <= i; j++) {
                    if (j === 0 || j === i) {
                        triangle[i][j] = 1;
                    } else {
                        triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
                    }
                }
            }
            return triangle;
        }

        function displayTriangle(triangle) {
            var table = document.createElement('table');
            for (var i = 0; i < triangle.length; i++) {
                var row = document.createElement('tr');
                for (var j = 0; j < triangle[i].length; j++) {
                    var cell = document.createElement('td');
                    cell.innerText = triangle[i][j];
                    row.appendChild(cell);
                }
                table.appendChild(row);
            }
            document.body.appendChild(table);
        }

        var rows = 10; // 指定要生成的行数
        var triangle = generateTriangle(rows);
        displayTriangle(triangle);
    </script>
</body>

</html>
 

这是c++的杨辉三角:
 

#include <iostream>
#include <vector>

std::vector<std::vector<int>> generateTriangle(int numRows) {
    std::vector<std::vector<int>> triangle;

    for (int i = 0; i < numRows; i++) {
        std::vector<int> row(i + 1, 1);

        for (int j = 1; j < i; j++) {
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }

        triangle.push_back(row);
    }

    return triangle;
}

void displayTriangle(const std::vector<std::vector<int>>& triangle) {
    int numRows = triangle.size();
    for (int i = 0; i < numRows; i++) {
        int numCols = triangle[i].size();
        for (int j = 0; j < numCols; j++) {
            std::cout << triangle[i][j] << " ";
        }
        std::cout << std::endl;
    }
}

int main() {
    int numRows = 10; // 指定要生成的行数
    std::vector<std::vector<int>> triangle = generateTriangle(numRows);
    displayTriangle(triangle);

    return 0;
}
 

Python杨辉三角:

def yanghui_triangle(n):
    triangle = [[1] * (i+1) for i in range(n)]
    for i in range(2, n):
        for j in range(1, i):
            triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
    return triangle

def print_triangle(triangle):
    for row in triangle:
        print(" ".join(map(str, row)))

n = int(input("请输入行数:"))
triangle = yanghui_triangle(n)
print_triangle(triangle)
 

请大家点赞关注收藏,成为粉丝3月30日有福利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1501010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内螺旋面的计算

内螺旋面的计算 内螺旋面的计算是机械工程和数学领域中的一个重要问题。它涉及到三维几何、微积分和数值计算等多个方面的知识。内螺旋面的形状和特性对于许多机械装置和工程应用来说至关重要&#xff0c;因此准确计算内螺旋面的几何参数和性质至关重要。内螺旋面是一种特殊的…

warning: #188-D: enumerated type mixed with another type

警告解释&#xff1a;枚举类型混合了其它的数据类型&#xff1b; 解决方法&#xff1a; 1&#xff1a;检查代码&#xff0c;是不是存在混用&#xff1b;&#xff1b; 2&#xff1a;结构体初始化为 0 报warning&#xff0c;不能将结构体的第一个变量&#xff0c;使用枚举类型&am…

Dgraph 入门教程五(Shema)

要想做好图数据库&#xff0c;必须做图数据库设计&#xff0c;想做好Dgraph&#xff0c;就需要设计好Shema。Shema的语法是必须理解&#xff0c;如果不理解&#xff0c;别人写的Shema&#xff0c;我们也看不懂。我这里也是走马观花式的记录&#xff0c;细节还需要在使用的时候去…

如何恢复未保存的 Excel 文件

本周我们将 Office 恢复系列扩展到 Excel 恢复&#xff0c;并提出了最常见的问题&#xff1a;如何恢复 Excel 文件&#xff1f; 与 Office Word 不同&#xff0c;Excel 完全是关于表格和计算的。在处理Excel文件时&#xff0c;您可能会遇到更多问题。与往常一样&#xff0c;我们…

java-抢红包一些简单概念

抢红包&#xff0c;比如微信中抢红包&#xff0c;红包金额分配使用的是二倍均值算法。 二倍均值拆包&#xff1a; 拆包要求:所有人抢到的金额之和等于红包总额&#xff0c;每个人最少抢到 0.01 元&#xff0c;每个人抢到的红包金额不要相差太大二倍均值法:假设红包总金额是X&…

python安装laspy遍历las获取所有点的坐标

python3.12 pip install laspy 读取 LAS 文件中的点坐标&#xff0c;可以使用 laspy 库。这个库允许你轻松地读取和操作 LAS 文件中的数据。下面是一个示例代码&#xff0c;演示了如何使用 laspy 读取 LAS 文件中的坐标&#xff1a; 1、方法一 #version laspy&#xff1a;2.…

(C语言)字符分类函数

目录 字符分类函数 1. iscntrl 2. isspace 3. isdigit 4. isxdigit 5. islower 6. isupper 7. isalpha 8. isalnum 9. ispunct 10. isgraph 11. isprint 字符分类函数 C语言中有一系列的函数是专门做字符分类的 &#xff0c;也就是一个字符是属于什么类型的字符的。…

文献学习-13-机器人顶刊IJRR近期国人新作(2024.3)

一、IJRR简介 The International Journal of Robotics Research&#xff08;IJRR&#xff09;是机器人领域的高水平学术期刊&#xff0c;专注于发布关于机器人技术和相关领域的最新研究成果。IJRR创刊于1982年&#xff0c;是该领域的第一本学术刊物&#xff0c;2022-2023最新影…

2024最新版短剧小程序

仿抖音滑动小短剧影视微信小程序源码&#xff0c;带支付收益等模式、支持无限滑动&#xff1b;高性能滑动、预加载、视频预览&#xff0c;支持剧情介绍&#xff0c;集合壁纸另外仿抖音滑动效果&#xff1b;支持会员模式&#xff0c;支持用户单独购买等等多功能。 丰富的后台设…

Golang基于Redis bitmap实现布隆过滤器(完结版)

Golang基于Redis bitmap实现布隆过滤器&#xff08;完结版&#xff09; 为了防止黑客恶意刷接口&#xff08;请求压根不存在的数据&#xff09;&#xff0c;目前通常有以下几种做法&#xff1a; 限制IP&#xff08;限流&#xff09;Redis缓存不存在的key布隆过滤器挡在Redis前 …

本鲸:打造科技招商新引擎、实现政企资源高效对接

在当今这个快速变化的时代&#xff0c;科技创新已成为推动社会进步和经济发展的核心动力。本鲸&#xff0c;作为科技创新创业服务的平台&#xff0c;正以其独特的视角和专业服务&#xff0c;为政府和企业提供一站式科技招商解决方案&#xff0c;助力构建创新驱动的经济发展新模…

Rollup Summer:一览 Rollup 生态全景图

作者&#xff1a;Stanley&#xff0c;Kernel Ventures 编译&#xff1a;JIN&#xff0c;Techub News 短短几天内&#xff0c;ZKFair 的总锁定价值&#xff08;TVL&#xff09;已达到 1.2 亿美元&#xff0c;目前稳定在 8000 万美元&#xff0c;使其成为增长最快的 Rollup 之一…

系统提示mfc100u.dll丢失或错误的解决方法分享

mfc100u.dll是Microsoft Foundation Classes (MFC)库中的一个关键动态链接库文件。 mfc100u.dll文件是Microsoft Foundation Classes (MFC)库的一部分&#xff0c;这是一个为软件开发者提供的一系列类和功能&#xff0c;旨在简化Windows应用程序的开发过程。这个特定的文件包含…

计算机组成原理之机器:存储器之高速缓冲存储器

计算机组成原理之机器&#xff1a;存储器之高速缓冲存储器 笔记来源&#xff1a;哈尔滨工业大学计算机组成原理&#xff08;哈工大刘宏伟&#xff09; Chapter3&#xff1a;存储器之高速缓冲存储器 3.1 概述 3.1.1 为什么用cache&#xff1f; 角度一&#xff1a;I/O设备向…

智能研发新纪元:探索2024年AI辅助研发的发展与趋势

随着人工智能&#xff08;AI&#xff09;技术的高速发展与创新&#xff0c;我们迎来了一个全新的时代&#xff0c;尤其是在研发领域。AI正以前所未有的速度和效率推动着科技的突破。2024年&#xff0c;AI辅助研发成为走在时代前端的核心竞争力。在这篇文章中&#xff0c;我们将…

typescript学习(更新中)

目录 开发环境搭建类型如何声明有哪些类型编译配置文件 开发环境搭建 npm i -g typescripttsc检查是否安装成功 类型如何声明 // 先声明再赋值 let a: number a 1// 直接赋值 let b 1function sum(a: number, b: number): number {return a b } console.log(sum(1, 2))有…

使用Apache Kafka的Golang实践指南

您是否在寻找构建可扩展、高性能应用程序的方法&#xff0c;这些应用程序可以实时处理流数据&#xff1f;如果是的话&#xff0c;结合使用Apache Kafka和Golang是一个很好的选择。Golang的轻量级线程非常适合编写类似Kafka生产者和消费者的并发网络应用程序。它的内置并发原语&…

httprunner用例结构(前后置)

说明&#xff1a;httprunner 结合 pytest 的前后置方式 1. 用例级别前后置 1.1. setup teardown class TestCaseRefTestcase(HttpRunner):# 用例级别前后置def setup(self):logger.warning("------用例级别前置")def teardown(self):logger.warning("------用…

算法练习:双指针

目录 1. 双指针1.1 移动 "0"1.2 复写 "0"1.3 快乐数&#xff08;快慢指针&#xff09;1.4 盛水最多的容器&#xff08;单调性原则&#xff09;1.5 有效三角形个数1.6 两个数之和1.7 三数之和1.8 四数之和 1. 双指针 1.1 移动 “0” 题目信息&#xff1a; …

线程有几种状态,状态之间的流转是怎样的?

Java中线程的状态分为6种&#xff1a; 1.初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。 2.运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;READY&#xff09;和运行中&#xff08;RUNNING&#xff09;两种状态笼统的称为“运行”…