Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解

Python真题案例之小学算术

阶乘精确值

需求:输入一个整数n,输出n的阶乘精确值。

示例:

输入:5

输出:120

解析:

$n!$ 即 $n(n-1)(n-2)...2*1$,可以使用循环的方式计算出阶乘。由于阶乘的结果往往非常大,需要使用高精度计算库decimal来实现。

import decimal

def factorial(n):
    if n==0:
        return 1
    else:
        return n*factorial(n-1)

def factorial_decimal(n):
    if n==0:
        return 1
    else:
        return n*factorial_decimal(n-1)

decimal.getcontext().prec = 100

n = int(input())
result = factorial(n)
result_decimal = decimal.Decimal(factorial_decimal(n))

print(result)
print(result_decimal)

孪生素数

需求:找出1-1000之间的所有孪生素数。

示例:

输出:

(3, 5)
(5, 7)
(11, 13)
(17, 19)
(29, 31)
(41, 43)
(59, 61)
(71, 73)
(101, 103)
(107, 109)
(137, 139)
(149, 151)
(179, 181)
(191, 193)
(197, 199)
(227, 229)
(239, 241)
(269, 271)
(281, 283)
(311, 313)
(347, 349)
(419, 421)
(431, 433)
(461, 463)
(521, 523)
(569, 571)
(599, 601)
(617, 619)
(641, 643)
(659, 661)
(809, 811)
(821, 823)
(827, 829)
(857, 859)
(881, 883)

解析:

孪生素数是相邻两个素数的差为2的素数对,可以通过判断相邻的两个数是否都为素数来实现。使用is_prime函数判断一个数是否为素数。由于算法的时间复杂度比较高,需要使用筛法来优化。

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5)+1):
        if n%i == 0:
            return False
    return True

def prime_twins():
    primes = [True] * 1000
    primes[0], primes[1] = False, False
    for i in range(2, int(1000**0.5)+1):
        if primes[i]:
            for j in range(i*i, 1000, i):
                primes[j] = False
    for i in range(2, 979):
        if primes[i] and primes[i+2]:
            print((i, i+2))

prime_twins()

6174问题详解

需求:输入一个四位数,求经历过多少次“升序排列”和“降序排列”后最终得到的差为6174。(在每次排列时,如果排列后的数字不足4位,则在左边补0)

示例:

输入:3895

输出:3

解析:

我们可以根据6174的特点,即无论如何排列四位数,最多需要七次操作即可得到6174的结果,推论出每次操作都会使结果的差值缩小到原来的1/9,最终缩小到6174。因此我们可以通过模拟每次操作的过程,统计操作的次数。

def sort_num(n):
    nums = [int(digit) for digit in str(n)]
    nums.sort()
    return nums

def reverse_num(n):
    nums = [int(digit) for digit in str(n)]
    nums.sort(reverse=True)
    return nums

def get_difference(n1, n2):
    return int(''.join([str(digit) for digit in n1])) - int(''.join([str(digit) for digit in n2]))

def k6134(num):
    count = 0
    while True:
        nums1 = sort_num(num)
        nums2 = reverse_num(num)
        diff = get_difference(nums2, nums1)
        if diff == 6174:
            return count
        count += 1
        num = diff
    return count

n = int(input())
print(k6134(n))

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python真题案例之小学算术 阶乘精确值 孪生素数 6174问题详解 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python用函数创造字典的实例讲解

    下面是关于“Python用函数创建字典的实例讲解”的完整攻略,具体过程如下: 1. 了解字典数据结构 在Python中,字典是一种非常常见的数据结构,其结构类似于Java和其他编程语言中的“Map”或“字典”。字典是由键和值组成的集合,其中每个键都必须是唯一的。 2. 使用字典字面量创建字典 Python中创建字典最简单的方法是使用字典字面量。您可以使用大括…

    python 2023年5月13日
    00
  • 浅谈python之自动化运维(Paramiko)

    浅谈python之自动化运维(Paramiko) 什么是Paramiko Paramiko是Python实现的SSHv2协议的模块,是 Python中一个用于SSH协议的模块,可以实现SSH的远程管理功能。相比于传统的SSH客户端,可以通过脚本进行大量的自动化运维操作,提高运维效率。 安装Paramiko 安装Paramiko非常简单,只需要使用pip安装即…

    python 2023年5月19日
    00
  • 对python操作kafka写入json数据的简单demo分享

    下面是对Python操作Kafka写入JSON数据的完整攻略: 简介 Kafka是一个分布式流处理平台,常用于数据处理、日志处理等场景。Python中的kafka-python库提供了对Kafka的封装,使得Python可以很方便地对Kafka进行操作。本攻略将演示使用kafka-python库向Kafka中写入JSON数据的方法。 环境准备 在使用kafk…

    python 2023年6月3日
    00
  • Python实现简单HTML表格解析的方法

    下面是关于Python实现简单HTML表格解析的方法的详细实例教程。 简介 HTML是网页的基础,而网页中最常用的就是表格。在某些情况下,我们需要从HTML表格中提取数据以便进一步处理,因此,Python中如何解析HTML表格变得非常重要。在Python中,有多种解析HTML表格的方法,本篇文章将介绍其中的两种方法:使用pandas库和使用Beautiful…

    python 2023年5月13日
    00
  • python使用requests模块实现爬取电影天堂最新电影信息

    以下是使用Python requests模块实现爬取电影天堂最新电影信息的攻略: Python使用requests模块实现爬取电影天堂最新电影信息 电影天堂是一个非常受欢迎的电影资源网站,以下是使用Python requests模块实现爬取电影天堂最新电影信息的攻略: 获取电影列表页面 首先,我们需要获取电影天堂的电影列表页面,以下是获取电影列表页面的示例:…

    python 2023年5月14日
    00
  • python使用hdfs3模块对hdfs进行操作详解

    在Python中,可以使用hdfs3模块对HDFS进行操作,包括读取、写入、删除、重命名等操作。以下是详细的解析和示例: 安装hdfs3模块 在使用hdfs3模块之前,需要先安装它。可以使用以下命令在命令行中安装: pip install hdfs3 连接HDFS 在使用hdfs3模块之前,需要先连接到HDFS。可以使用以下代码连接到HDFS: from h…

    python 2023年5月14日
    00
  • 如何比较两个NumPy数组

    要比较两个NumPy数组,可以使用NumPy中的比较函数,这些函数返回一个布尔数组,该数组表示每个元素是否满足比较条件。下面是一些常用的比较函数: numpy.array_equal(x, y) : 如果两个数组x和y的形状和元素的值都相等,则返回True,否则返回False。 numpy.allclose(a, b, rtol=1e-05, atol=1e…

    python-answer 2023年3月25日
    00
  • 400多行Python代码实现了一个FTP服务器

    下面介绍一下实现FTP服务器的完整攻略。 1. 确定需求 在实现FTP服务器之前,我们需要先明确需求,例如需要实现的功能、支持的协议等。一般来说,FTP服务器需要支持用户登录、文件上传和下载、目录操作等基本功能,同时使用TCP协议进行传输。 2. 编写代码 2.1 创建服务器 首先,我们需要创建一个FTP服务器实例,用于接收客户端的请求并进行处理。 impo…

    python 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部