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

yizhihongxing

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. 使用换行符”\n” 可以使用换行符”\n”来实现将内容分行输出的功能,具体步骤如下: 定义一个字符串,该字符串包含需要输出的内容。 在字符串的适当位置使用”\n”来表示换行,将需要分行的内容拆分到不同的行中。 使用print()函数将字符串输出到终端。 示例: text = ‘Python is a\n…

    python 2023年6月3日
    00
  • 使用python实现正则匹配检索远端FTP目录下的文件

    下面是详细的攻略: 使用Python实现正则匹配检索远端FTP目录下的文件 在Python中,我们可以使用ftplib库来连接FTP服务器,并使用正则表达式来匹配文件名。下面是一个示例,演示如何使用Python实现正则匹配检索远端FTP目录下的文件: import re from ftplib import FTP def search_files(ftp,…

    python 2023年5月14日
    00
  • Python爬虫之爬取2020女团选秀数据

    本文将详细讲解如何使用Python爬虫爬取2020女团选秀数据的完整攻略,包括数据分析和可视化。我们将使用Python的requests、BeautifulSoup、pandas和matplotlib等库来实现这个任务。 爬取数据 首先,我们需要从网站上爬取2020女团选秀的数据。我们可以使用Python的requests和BeautifulSoup库来实现…

    python 2023年5月15日
    00
  • 在Python中使用NumPy将赫米特数列与自变量相乘

    下面将详细讲解在Python中使用NumPy将赫米特数列与自变量相乘的完整攻略。 什么是赫米特数列? 赫米特数列是指一系列以赫米特多项式作为系数的数列,其形式为: $${\displaystyle H_{n}(x)=(-1)^{n}e^{\frac{x^{2}}{2}}{\frac {d^{n}}{dx^{n}}}e^{-{\frac {x^{2}}{2}}…

    python-answer 2023年3月25日
    00
  • Python 基于win32com客户端实现Excel操作的详细过程

    让我来为你详细讲解“Python基于win32com客户端实现Excel操作的详细过程”的完整实例教程。 1. 安装pywin32模块 Python操作Excel需要使用到pywin32模块,我们需要先安装此模块。在命令行下运行以下命令: pip install pywin32 2. 导入win32com模块 完成模块安装后,在Python代码中导入win3…

    python 2023年5月13日
    00
  • 使用Python提取文本中含有特定字符串的方法示例

    使用Python提取文本中含有特定字符串的方法可以通过正则表达式和字符串查找实现。下面分别介绍这两种方法的具体实现过程。 正则表达式 正则表达式是一种强大的字符串匹配工具,可以帮助我们快速、准确地查找目标字符串。具体步骤如下: 导入re模块,使用re.search()函数进行匹配。 import re text = "Learning Python…

    python 2023年6月3日
    00
  • python处理变量交换与字符串及判断的小妙招

    “Python处理变量交换与字符串及判断的小妙招”是程序员们在使用Python编程时非常常见的技巧。本篇攻略将会详细介绍这方面的技巧,包括变量交换、字符串处理及判断操作。 Python处理变量交换的小妙招 变量交换是指将两个变量的值进行交换,比如将变量a和变量b的值交换。在Python中,可以使用如下代码实现变量交换的功能: a, b = b, a 此处的代…

    python 2023年6月5日
    00
  • Python 实现网页自动截图的示例讲解

    Python 实现网页自动截图需要使用第三方库,比较流行的是 Selenium 和 Pyppeteer。这里以 Selenium 为例,讲解实现网页自动截图的攻略。 准备工作 首先需要安装 Selenium,可以通过 pip 命令进行安装: pip install selenium 接着需要安装浏览器驱动,例如 Chrome 驱动。可以到 ChromeDri…

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