一元二次方程求根
一元二次方程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
