From 9c795ca26c2fe1546f2cc5a4adae39181b95316d Mon Sep 17 00:00:00 2001 From: shiho629 Date: Thu, 27 Feb 2025 23:21:01 +0900 Subject: [PATCH 1/2] control_structures --- euclid.py | 9 +++++++++ machine_epsilon.py | 6 +++++- prime_number.py | 15 ++++++++++++++- trapezoidal_integral.py | 20 ++++++++++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/euclid.py b/euclid.py index da5c4aa..9c28709 100644 --- a/euclid.py +++ b/euclid.py @@ -2,3 +2,12 @@ b = input("b の値を入力: ") # TODO +def euclid(x,y): + while y != 0: + x,y = y, int(x) % int(y) + return(x) + +result = euclid(a,b) +print('最大公約数:{}'.format(result)) + + \ No newline at end of file diff --git a/machine_epsilon.py b/machine_epsilon.py index f87f5c1..ff2b6a3 100644 --- a/machine_epsilon.py +++ b/machine_epsilon.py @@ -1 +1,5 @@ -# TODO \ No newline at end of file +# TODO +epsilon = 1 +while 1 + epsilon > 1: + epsilon = epsilon/2 +print(epsilon) \ No newline at end of file diff --git a/prime_number.py b/prime_number.py index 2308cf4..2a2ea9b 100644 --- a/prime_number.py +++ b/prime_number.py @@ -1,4 +1,17 @@ a = input("aの値を入力: ") b = input("bの値を入力: ") -# TODO \ No newline at end of file +# TODO +def is_prime(n): + if int(n) < 2: + return False + for i in range(2,int(n)): + if int(n) % i == 0: + return False + return True + +for x in [a,b]: + if is_prime(x): + print('{}は素数'.format(x)) + else: + print('{}は素数ではない'.format(x)) \ No newline at end of file diff --git a/trapezoidal_integral.py b/trapezoidal_integral.py index 716aa70..8d4b102 100644 --- a/trapezoidal_integral.py +++ b/trapezoidal_integral.py @@ -3,3 +3,23 @@ # print(sin(0)) # >>> 0 # ----------- +from math import pi +h = ( pi/2 - 0 ) / 100 +S=0 +for i in range(1,101): + S += h/2 * (sin(0+(i-1)*h)+ sin(0+i*h)) +print(S) + + + + + + + + + + + + + + From 1b62ab17548cd17cf4e9350c635ffcf26c523176 Mon Sep 17 00:00:00 2001 From: shiho629 Date: Fri, 28 Feb 2025 00:47:53 +0900 Subject: [PATCH 2/2] function --- euclid.py | 22 +++++++++++++++------- prime_number.py | 6 ++++++ trapezoidal_integral.py | 29 +++++++++++++++++++++++------ 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/euclid.py b/euclid.py index 9c28709..23e54a9 100644 --- a/euclid.py +++ b/euclid.py @@ -2,12 +2,20 @@ b = input("b の値を入力: ") # TODO -def euclid(x,y): - while y != 0: - x,y = y, int(x) % int(y) - return(x) +def gcd(a,b): + while b != 0: + a,b = b, int(a) % int(b) + return a +result3 = gcd(a,b) +print(result3) -result = euclid(a,b) -print('最大公約数:{}'.format(result)) +def coprime(a,b): + while b != 0: + a,b = b, int(a) % int(b) + return a == 1 - \ No newline at end of file +result4 = coprime(a,b) +if result4: + print(f"{a}と{b}は互いに素") +else: + print(f"{a}と{b}は互いに素ではない") diff --git a/prime_number.py b/prime_number.py index 2a2ea9b..98b19e7 100644 --- a/prime_number.py +++ b/prime_number.py @@ -2,6 +2,12 @@ b = input("bの値を入力: ") # TODO +def check_natural(n): + if not n.isdigit() or int(n)<0: + raise ValueError('{}は自然数ではありません'.format(n)) +check_natural(a) +check_natural(b) + def is_prime(n): if int(n) < 2: return False diff --git a/trapezoidal_integral.py b/trapezoidal_integral.py index 8d4b102..2dd455d 100644 --- a/trapezoidal_integral.py +++ b/trapezoidal_integral.py @@ -4,13 +4,30 @@ # >>> 0 # ----------- from math import pi -h = ( pi/2 - 0 ) / 100 -S=0 -for i in range(1,101): - S += h/2 * (sin(0+(i-1)*h)+ sin(0+i*h)) -print(S) - +def integral(f,a=0,b=1,n=100): + S=0 + h = (b - a)/n + for i in range(1,n+1): + S += h/2 * (f(a + (i-1)*h)+f(a+i*h)) + return (S) + +result1 = integral(sin,0,pi/2,50) +print('(1){}'.format(result1)) + +def func2(x): + return 4/(1+x**2) + +result2 = integral(func2) +print('(2){}'.format(result2)) + +from math import sqrt +from math import exp +def func3(x): + return sqrt(pi)*exp(-x) + +result3 = integral(func3,-100,100,1000) +print('(3){}'.format(result3))