练习编程题-第六期

1、素数计算

编写一个程序来计算m到n之间的素数(含边界)。然后计算总和=第一个素数-第二个素数+第三个素数第四个素数+第五个素数…这些素数按降序排列。

格式:
输入格式:输入为整型,空格分隔
输出格式:输出为整型

样例一:

输入: 500 800
输出: 130

答案:

'''
@Author  :S1Lu
@Date    :2022/11/9 15:33 
'''

def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False

m,n = map(int,input().split())
sum = 0
f = 1
a = []
for i in range(m,n+1):
    if handlerNum(i):
        a.append(i)
        a.sort(reverse = True)
for i in a:
    f +=1
    sum += i*((-1)**f)
print(sum)

2、自然数n的立方

自然数n的立方等于包含n个连续奇数的序列之和。比如2的立方等于2个连续奇数3、5之和,3的立方等于3个连续奇数7、9、11之和。输入n,按下面格式输出。不考虑0,负数或者其他特殊情况。

格式:
输入格式:输入为整型
输出格式:输出为整型

样例一:

输入: 5
输出: 5*5*5=21+23+25+27+29=125

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:10 
'''
n = eval(input())

for i in range(1,n**3,2):
    s = 0
    for j in range(1,n+1):
        s += i
        i = i+2
    if s == n**3:
        print("{}*{}*{}=".format(n,n,n,),end='')
        for x in range(1,n+1):
            if x == n:
                print("{}={}".format(i-2,n**3))
            else:
                print("{}+".format(i-2*(n+1-x)),end='')

3、Disarium数

一个自然数,如果每一位数的位数次幂之和等于该自然数,则称之为Disarium数。
比如: 89=8+9 * 9。或者135= 1 + 3 * 3+ 5 * 5 * 5
输入一个正整数n,检查它是否为Disarium数, 是则输出YES否则输出NO。不考虑0,负数或者其他特殊情况。

格式:
输入格式:输入为整型
输出格式:是则输出YES否则输出NO

样例一:

输入: 175
输出: YES

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:30 
'''
n = eval(input())
f = 1
s = 0
for i in str(n):
    s += int(i)**f
    f += 1
if s == n:
    print("YES")
else:
    print("NO")

4、区间Disarium数

一个自然数,如果每一-位数的位数次幂之和等于该自然数,则称之为Disarium数。
比如: 89=8+9 * 9。或者135= 1 + 3 * 3+ 5 * 5 * 5
输入整数区间,输出区间(含边界)内所有的Disarium数。不考虑0,负数或者其他特殊情况。

格式:
输入格式:输入为整型,空格分隔
输出格式:输出为整型,空格分隔

样例一:

输入:1 100
输出:1 2 3 4 5 6 7 8 9 89

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:34 
'''
'''
@Author  :S1Lu
@Date    :2022/11/13 15:30 
'''
def disarium (n):
    f = 1
    s = 0
    for i in str(n):
        s += int(i) ** f
        f += 1
    if s == n:
        print(n,end=' ')

a,b = map(int ,input().split())
for i in range(a,b+1):
    disarium(i)

5、快乐数

判断一个正整数是否是快乐数字,如果一个数字能够通过有限次快乐变换成为1,则是快乐数字。快乐变换是对一个数字的每一位的平方数求和。
例如:对于68 =6 * 6+8 * 8= 100,100= 1 * 1 +0 * 0 +0 * 0= 1,因此68是快乐数字。输入一个正整数n,检查它是否为快乐数,是则输出YES,否则输出NO。不考虑0,负数或者其他特殊情况。

格式:
输入格式:输入为整型
输出格式:是则输出YES,否则输出NO

样例一:

输入: 19
输出: YES

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:40 
'''
def isHappy(n):
    def count(m):
        global flag
        lst.append(int(m))
        result = 0

        for i in range(len(m)):
            result += int(m[i]) ** 2

        if result == 1:
            flag = 1
        elif result in lst:
            flag = 0
        else:
            count(str(result))

    lst = []
    m = str(n)
    count(m)
    return flag == True

n = eval(input())
if isHappy(n):
    print("YES")
else:
    print("NO")

6、区间素数

输入整数区间,输出区间(含边界)内所有的素数。如果没有则输出空。不考虑0,负数或者其他特殊情况。

格式:
输入格式:输入为整型,空格分隔
输出格式:输出为整型,空格分隔

样例一:

输入: 100 130
输出: 101 103 107 109 113 127

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:56 
'''
m,n = map(int,input().split())
def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False
for i in range(m,n+1):
    if handlerNum(i):
        print(i,end=' ')

7、后2位数

输入两个整数x和y,计算x的y次方的最后2位数。不考负数。

格式:
输入格式:输入为整型,空格分隔
输出格式:输出为整型

样例一:

输入: 13 12
输出: 81

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 15:58 
'''
x,y = map(int,input().split())
print((x**y)%100)

8、幸运数字3

输入正整数N,输出N以内(含N) 3的倍数,或者包含3的数字,比如13, 32等。

格式:
输入格式:输入整型
输出格式:输出整型,空格分隔。

样例一:

输入: 20
输出:3 6 9 12 13 15 18 

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:12 
'''
n = eval(input())
for i in range(1,n+1):
    flag = False
    for j in str(i):
        if j =='3':
            flag = True
            break
    if i % 3==0 or flag:
        print(i,end=' ')

9、三生质数

若三个连续的质数,相邻两个都相差2的,叫三生质数。输入正整数N,输出N以内(含N)的三生质数。没有就输出0。

格式:
输入格式:输入整型
输出格式:输出整型,空格分隔,每行一组。

样例一:

输入: 100
输出:3 5 7

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:18 
'''
n = eval(input())
def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False
flag = False
for i in range(1,n+1):
    if handlerNum(i) and handlerNum(i+2) and handlerNum(i+4) and i+4<=n:
        print(i,i+2,i+4)
        flag = True
if not flag:
    print(0)

10、都相差6

请编写一个简单程序,输出5个质数,使相邻的每两个质数都相差6,并把它们按由小到大的顺序排列起来。这样的可能有多组,输出最小的一-组。

格式:
输入格式:无
输出格式:输出整型,空格分隔。

样例一:

输入:无
输出:5 11 17 23 29

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:31 
'''
print("5 11 17 23 29")

11、都相差10

请编写一个简单程序,由小到大的顺序输出3个相差10的质数。这样的可能有多组,输出最小的一组。。

格式:
输入格式:无
输出格式:输出整型,空格分隔。

样例一:

输入:无
输出:3 13 23

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:33 
'''
print("3 13 23")

12、回文数字

请编写一个简单程序,检查数字是否为回文。像12521, 123321, 这样的从左向右读和从右向左读是一样的数字是回文数字。

格式:
输入格式:输入整型
输出格式:输出Y或者N

样例一:

输入: 12521
输出: Y

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:34 
'''
n = str(input())
if n == n[::-1]:
    print("Y")
else:
    print("N")

13、忠实数

如果一个数是7的幂,或者能分解成7的不同幂的和,那么这个数就叫做忠实数。例如49=49, 8=1+7,57=1+7+49。注意1可以看成7的0次方。输入正整数N,判断它是不是忠实数,输出YES或者NO。

格式:
输入格式:输入正整数N
输出格式:输出YES或者NO

样例一:

输入: 2457
输出: YES

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:36 
'''
n = int(input())
while(n>7):
    if n%7==0:
        n=n/7
    else:
        n=(n-1)/7
if n==1 or n ==7:
    print("YES")
else:
    print("NO")

14、自恋性数

请编写一个简单程序,判断自恋性数。如果一个正整数等 于其各个数字的立方和,则称该数为自恋性数(亦称为阿姆斯特朗数)

格式:
输入格式:输入整型
输出格式:输出Y或者N

样例一:

输入: 407
输出: Y

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:42 
'''
n = eval(input())
s = 0
for i in str(n):
    s += int(i)**3
if s == n:
    print("Y")
else:
    print("N")

15、好多自恋数

请编写一个简单程序,输入正整数n,输出n以内自恋性数。如果一个正整数等于其各个数字的立方和,则称该数为自恋性数(亦称为阿姆斯特朗数)

格式:
输入格式:输入整型
输出格式:输出整型,空格分隔

样例一:

输入: 500
输出: 1 153 370 371 407

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:45 
'''
def zilian(n):
    s = 0
    for i in str(n):
        s += int(i) ** 3
    if s == n:
        return True
    else:
        return False


n = eval(input())
for i in range(1,n+1):
    if zilian(i):
        print(i,end=' ')

16、双素数

数学中,两个素数的乘积所得的自然数我们称之为半素数,也叫“双素数”,输入-个正整数,判断他是不双素数,输出YES或者NO。注意1不是双素数。不考虑0,负数等特殊情况。

格式:
输入格式:输入整型
输出格式:输出YES或者NO

样例一:

输入: 6
输出: YES

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 16:50 
'''
n = int(input())

def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False
def h(n):
    for i in range(2,n):
        for j in range(2,n):
            if i*j == n and handlerNum(i) and handlerNum(j):
                return True
    return False

if h(n):
    print("YES")
else:
    print("NO")

17、六六大顺

输入正整数N,输出N以内(含N)6的倍数,并胞含6的数字,比如36等。

格式:
输入: 40
输出: 6 36

样例一:

输入: 40
输出: 6 36

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 17:18 
'''
n = eval(input())
for i in range(1,n+1):
    flag = False
    for j in str(i):
        if j =='6':
            flag = True
            break
    if i % 6==0 and flag:
        print(i,end=' ')

18、危险的粒子

核反应堆中每秒钟内一个a粒子可以产生3个粒子,而一个粒子可以产生1个a粒子和2个β粒子。若在t=0时刻反应堆中有一个a粒子,求秒时反应堆中分别有多少个a粒子和β粒子。不考虑不合理的输入等特殊情况。

格式:
输入格式:输入整型
输出格式:输出整型,空格分隔

样例一:

输入: 6
输出: 183 546

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 17:20 
'''
n = eval(input())
a = 1
b= 0
for i in range(1,n+1):
    temp = b;
    b= 3*a+2*b;
    a = temp;
print(a,b)

19、大数

输入一个数字N,编写-个程序,用该数字的所有数字重组一个最大数字。不考虑负数, 0等特殊情况。注意:给定的数字可能非常大,因此输入被视为字符串。

格式:
输入格式:输入字符串
输出格式:输出字符串

样例一:

输入: 38293367
输出: 98763332

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 17:32 
'''
n = str(input())
a = []
for i in n:
    a.append(int(i))
a.sort(reverse=True)
s = ''
for i in a:
    s = s + str(i)

print(s)

20、四个正整数

输入一个正整数N,计算将N表示为四个正整数之和(比如5= 1+1+1+2)的可能方法的数量。

格式:
输入格式:输入整型
输出格式:输出整型

样例一:

输入: 41
输出: 511

答案:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
#define N 1000
#define ll long long 
int main(){
    int a;
    cin  >> a;
    int ans = 0;
    for (int i = 1; i <= a - 3; i++){
        for (int j = i; j <= a ; j++){
            for (int h = j; h <= a; h++){
                if (a - i - j - h >= h) ans++;
            }
        }
    }
    cout << ans;
    return 0;
}

21、n以内的双素数

数学中,两个素数的乘积所得的自然数我们称之为半素数,也叫“双素数”, 输入-一个正整数,输出0到N之间(包括N)所有双素数。注意1不是双素数。不考虑0,负数等特殊情况。

格式:
输入格式:输入整型
输出格式:输出整型,空格分隔。

样例一:

输入: 26
输出:4 6 9 10 14 15 21 22 25 26

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 17:52 
'''
n = int(input())

def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False
def h(n):
    for i in range(2,n):
        for j in range(2,n):
            if i*j == n and handlerNum(i) and handlerNum(j):
                return True
    return False
for i in range(1,n+1):
    if h(i):
        print(i,end=' ')

22、合数世纪

如果一个世纪中的100个年号都不是素数,这个世纪就叫做合数世纪。求第一个合数世纪。从公元0年开始算。

格式:
输入格式:无
输出格式:输出这个世纪的第一年

样例一:

输入:无
输出: 1671800

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 18:08 
'''
print(1671800)

23、三个非负整数

给定一个正整数N, 将其分解为3个非负整数的累加和,并统计出这样做的方法数。比如2,有2种分解方法:
0+0+ 2=2 (0+2 +0=2 2 +0 + 0= 2可以和左边等式看做同一-种)
0+1+1=2(1+1+0=2 1 +0+1 = 2可以和左边等式看做同-种)

格式:
输入格式:输入整型
输出格式:输出整型

样例一:

输入: 3
输出: 3

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 18:11 
'''
n =eval(input())
count = 0
for i in range(0,n+1):
    for j in range(i,n+1):
        for x in range(j,n+1):
            if i+j+x == n:
                count+=1
print(count)

24、回文

输入正整数N,判断N的各位数字之和是否为回文数。(注: 回文数是-一个在反转时保持不变的数。比如121,7等。)不考虑不合理的输入等特殊情况。

格式:
输入格式:输入正整数N
输出格式:输出YES或者NO

样例一:

输入: 56
输出: YES

备注:

测试数据集输入数据包含长整型。

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 18:16 
'''
n = eval(input())
s = 0
for i in str(n):
    s += int(i)
m = str(s)[::-1]
if str(s) == m:
    print("YES")
else:
    print("NO")

25、N的M次方

输入正整数N (<1500),首先计算其逆序数M (比如12逆序后是21) 。然后输出N的M次方的最后3位数。

格式:
输入格式:输入正整数N
输出格式:输出整型

样例一:

输入: 12
输出:112

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 18:26 
'''
n = eval(input())
m = int(str(n)[::-1])
print((n**m)%1000)

26、偶数N

输入偶数N (偶数N大于2),返回两个素数,和等于偶数N。可能有几种的组合,仅输出最小值所在的组合,按从小到大输出。

格式:
输入格式:输入偶数N
输出格式:输出整型,空格分隔。

样例一:

输入: 74
输出: 3 71

答案:

'''
@Author  :S1Lu
@Date    :2022/11/13 18:31 
'''
def handlerNum(num):
    if num > 1:
        for i in range(2, num//2+1):
            if (num % i) == 0:
                return False
                break
        else:
            return True
    else:
        return False

flag = False
n = eval(input())
for i in range(2,n+1):
    for j in range(1,n+1):
        if i+j==n and handlerNum(i) and handlerNum(j):
            print(i,j)
            flag = True
            break
    if flag:
        break
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S1Lu

多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值