zoukankan      html  css  js  c++  java
  • python第五周:一元二次方程求根、百钱买百鸽、最大公约数和最小公倍数、计算三角形面积、回文素数、反素数

    一元二次方程求根

    一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的实数解:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    如果a值 为0,根据b值判断方程是否有解并输出,如果a与b同时为0,则输出Data error!‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    如果方程无实数解,输出“该方程无实数解”;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    如果方程有两个相同的实数解,输出一个解;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    如果方程有两个不同的实数解,在一行内按从大到小顺序输出方程的两个解,用空格分隔。

    import math
    a=float(input())
    b=float(input())
    c=float(input())
    data=pow(b,2)-4*a*c
    if(a==0):
        if(b==0):
            print("Data error!")
        else:
            print(-(c/b))
    else:
        if(data<0):
            print("该方程无实数解")
        elif(data==0):
            print((-b+math.sqrt(data))/(2*a))
        else:
            x1=(-b+math.sqrt(data))/(2*a)
            x2=(-b-math.sqrt(data))/(2*a)
            if(x1>x2):
                print("{} {}".format(x1,x2))
            else:
                print("{} {}".format(x2,x1))

    百钱买百鸡

    我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?

    每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    如果有多组解时,按公鸡数量由少到多输出;

    for i in range(1,100):
        for x in range(1,100):
            for y in range(1,100):
                if (((5*i+3*x+(1/3)*y)==100)and(i+x+y==100)):
                    print(i,x,y)

    求最大公约数和最小公倍数

    a=int(input())
    b=int(input())
    ma=max(a,b)
    mi=min(a,b)
    while(b!=0):
        temp = a % b
        a = b
        b = temp
    for i in range(1,mi+1):
        if ma*i%mi==0:
            x=ma*i
            break
    print(a,x)

    判断三角形并计算面积

    输入三个数a,b,c, 判断能否以它们为三个边长构成三角形。若能,输出YES和三角形面积(结果保留2位小数),否则输出NO。

    a=float(input())
    b=float(input())
    c=float(input())
    if (a+b>c) and (a+c>b) and (b+c>a):
        s=(a+b+c)/2
        area=(s*(s-a)*(s-b)*(s-c))**0.5
        print("YES")
        print("{:.2f}".format(area))
    else:
        print("NO")

    回文素数

     回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。
    用户输入一个正整数n(1 <= n <= 100), 请你在一行内输出从小到大排列的的前n个回文素数,数字之间用空格分隔。

    n=int(input())
    a=0
    b=1
    def prime(num):
        if num <= 1:
            return False
        i = 2
        while i * i <= num:
            if num % i == 0:
                return False
            i += 1
        return True
    def huiwen(num):
        t=num
        total=0
        while t>0:
            total=total * 10+t % 10
            t=int(t/10)
        return num==total
    while (a!=n):
        if(huiwen(b) and prime(b)):
            print(b ,end=' ')
            a=a+1
        b=b+1

    反素数

    反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
    输入一个正整数n(1 <= n <= 100), 请输出从小到大排列的的前n个反素数,数字间以空格进行分隔。

    n=int(input())
    a=0
    b=1
    def prime(num):    #判断数字是否是素数
        if num <= 1:
            return False
        i = 2
        while i * i <= num:
            if num % i == 0:
                return False
            i += 1
        return True  
    def huiwen(num):    #判断数字是否回文
        t=num
        total=0
        while t>0:
            total=total * 10+t % 10
            t=int(t/10)
        return num!=total 
    def fanshu(num):    # 将数字反过来
        t=num
        total=0
        while t>0:
            total=total * 10+t % 10
            t=int(t/10)
        return (total)
    while (a!=n):
        b2=fanshu(b)
        if(huiwen(b) and prime(b) and prime (b2)):
            print(b ,end=' ')
            a=a+1
        b=b+1
  • 相关阅读:
    扫描与爆破
    复习与PKI技术

    IIS与FTP
    IIS与WEB
    DNS部署与安全
    DHCP服务部署与安全
    文件共享服务CIFS
    NTFS权限
    关于操作运算符的一些小练习
  • 原文地址:https://www.cnblogs.com/linjiaxin59/p/12677349.html
Copyright © 2011-2022 走看看