用turtle画素数图

这篇博客介绍如何利用Python的turtle模块绘制素数图。通过代码解释,包括判断素数的逻辑,设置画布背景,定义画笔速度和图形宽度等步骤,最后展示生成的txt文件和eps图像文件,呈现了由素数构成的独特图形。
摘要由CSDN通过智能技术生成

*这篇文章至关重要,是我,也是你们学Python的一个转折点,因为今天这串代码会自己单独创建几十行字,和主程序一起保存。

代码解释:

import turtle
from math import sqrt

sqrt就是开平方的函数

def is_prime(num):
    for i in range(2,round(sqrt(num))+1):
        if num % i == 0:
            return False
    return True

这几行代码用于判断是否为素数。

如果取余(取余号:%)为0,也就是能整除,则不返回,判断后,剩下的就都返回了。

turtle.setup(0.8,0.9)
turtle.screensize(100,100,'black')

背景是黑色的。

minxv = -50
minyv = -80
maxxv = turtle.window_width()+minxv
maxyv = turtle.window_height()+minyv
turtle.setworldcoordinates(minxv,minyv,maxxv,maxyv)

width是宽,height是高,这里是x,y轴的具体位置。

turtle.speed(0)
turtle.Turt
好的,如果不使用 `matplotlib` 库,我们可以使用 Python 自带的 `turtle` 库来绘。具体实现方法如下: ```python import random import math import turtle def drawpi(darts): hits = 0 turtle.speed(0) turtle.penup() turtle.goto(-200, -200) turtle.pendown() turtle.color('blue') turtle.begin_fill() for i in range(4): turtle.forward(400) turtle.left(90) turtle.end_fill() turtle.color('white') turtle.penup() turtle.goto(0, 0) turtle.pendown() turtle.dot(5) for i in range(darts): x, y = random.random() * 200, random.random() * 200 turtle.penup() turtle.goto(x, y) turtle.pendown() if math.sqrt(x * x + y * y) <= 200: hits += 1 turtle.color('red') turtle.dot(2) else: turtle.color('green') turtle.dot(2) pi = 4 * hits / darts turtle.penup() turtle.goto(-190, 220) turtle.pendown() turtle.color('black') turtle.write('PI = {}'.format(pi)) turtle.hideturtle() turtle.done() ``` 这个函数和之前的实现方法类似,只是使用了 `turtle` 库来绘。具体来说,我们首先绘制了一个蓝色的矩形,表示正方形的边界。然后,我们在正方形的中心位置绘制了一个白色的点,表示圆心。接着,我们使用 `random` 库生成随机的点,并计算它们到圆心的距离。如果距离小于等于半径,表示这个点在圆内,我们就将它绘制成红色的点;否则,表示这个点在圆外,我们就将它绘制成绿色的点。最后,我们根据落在圆内的点的个数计算出 PI 的值,并在屏幕上输出。 你可以将这个函数保存到一个名为 `pi.py` 的文件中,然后在命令行中执行以下代码: ```python import pi MaxPrime = 0 for i in range(1, 5001): if pi.isPrime(i): MaxPrime = i print("最大素数为:", MaxPrime) pi.drawpi(MaxPrime) ``` 这个代码片段首先遍历 1 到 5000 的所有数,找到其中最大的素数,然后将其作为参数调用 `drawpi` 函数进行模拟和绘制。最后,输出最大素数的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值