Python-基礎数学(問題)

26114 ワード

Q.100から1000までの整数について、約数、小数、小数を出力するプログラムを作成します

import random

num = random.randint(100, 1000)

print('random number : {}'.format(num))

divisor = []
primeFactorization = []
prime = []
for i in range(1, num+1):

    #약수
    if num % i == 0:
        divisor.append(i)

    #소수
    if num != 1:
        flag = True
        for j in range(2, i):
            if i % j == 0:
                flag = False
                break
        if(flag):
            prime.append(i)

#소인수 = 약수이면서 소수인거
for x in divisor:
    if x in prime:
        primeFactorization.append(x)

print("약수 : ", divisor)
print("소수 : ", prime)
print("소인수 : ", primeFactorization)

Q.100から1000までの整数を小数点以下に分解し、小数点以下の指数を出力するプログラムを作成する

import random
num = random.randint(100, 1000)

print('random number : {}'.format(num))

n = 2

#소인수
primeFactorization = []
while n <= num:
    if num % n == 0:
        primeFactorization.append(n)
        num /= n
    else:
        n += 1

prime = set(primeFactorization)

print("소인수 : ", primeFactorization)
for x in prime:
    count = primeFactorization.count(x)
    print(f'{x} : {count}개')

Q.100から1000までの2つの数字について、プログラムを作成して公約数と最大公約数を出力し、認知を出力します。

# def gcd(num1, num2):
#     while num2 > 0:
#         num1, num2 = num2, num1 % num2
#     return num1

import random

num1 = random.randint(100, 1000)
num2 = random.randint(100, 1000)
print(f'random num1 : {num1}\nrandom num2 : {num2}')

#공약수
commonDivisor = []
for i in range(1, min(num1, num2)+1):
    if num1 % i == 0 and num2 % i == 0:
        commonDivisor.append(i)

gcd = max(commonDivisor)

print(f'공약수 : {commonDivisor}')
print(f'최대공약수 : {gcd}')

print(f'{num1}{num2}는 서로수이다.') if gcd == 1 else print(f'{num1}{num2}는 서로소가 아니다.')

Q.最大公約数と最小公約数を出力するプログラムを、100から1000までの2つの数字について作成します。

import random

num1 = random.randint(100, 1000)
num2 = random.randint(100, 1000)

print(f'random num1 : {num1}\nrandom num2 : {num2}')

multi = num1 * num2

while num2 > 0:
    num1, num2 = num2, num1 % num2

print(f'최대공약수 : {num1} 최대공배수 : {int(multi/num1)}')

Q.ユーザが入力した数字を利用して、以下の内容に基づいて変換パターンのコードを作成する。

num = int(input("10진수 입력: "))

print(f'2진수 변환 {bin(num)}')
print(f'8진수 변환 {oct(num)}')
print(f'16진수 변환 {hex(num)}')

Q.次の数列の一般項を求め、次にn項目の値和を求めるプログラムを作成する


a1 = int(input("a1을 입력해주세요 : "))
n = int(input("n을 입력해주세요: "))
d = int(input("공차를 입력해주세요 : "))

# 공식 an = a1 + (n - 1)*d
num = 1
answer = a1
total = answer
while num < n:
    answer += d
    total += answer
    num += 1

print(answer)
print("비교: ", a1 + (n - 1)*d)

print(total)
print("비교: ", int((n * (a1 + answer))/2))

Q.次の数列の一般項を求め、n個の値和を求めるプログラムを作成します。


import math

a1 = int(input("a1을 입력해주세요 : "))
n = int(input("n을 입력해주세요: "))
r = int(input("r을 입력해주세요 : "))

num = 1

answer = a1
total = a1
while num < n:
    answer *= r
    total += answer
    num += 1

print(answer)
print(a1 * int(math.pow(r, n - 1)))

print(total)
print(int(a1 * (1 - math.pow(r, n))/ (1 - r)))

Q.フィボナッチ数列からn項とn項の和を出力するプログラムを作成します。

num = int(input("n 을 입력해주세요: "))

n = 1
value = 0
value1 = 0
value2 = 0
sumvalue = 0
while n <= num:
    if n == 1 or n == 2:
        value = 1
        value2 = value
        value1 = value
        sumvalue += value
    else:
        value = value2 + value1
        value2 = value1
        value1 = value
        sumvalue += value
    n += 1

print(value)
print(sumvalue)

整列


  • 反復可能オブジェクト(=長さn)については、反復は許可されず、r個を抽出することによってリストされる.

  • 選ばれた順に並べられているので、順番が有意義です.
    (つまり、同じ値を抽出しても順序が異なる場合は異なる方法で処理する.)
  • permutations(반복 가능한 객체, r)

  • コンポジット

  • 反復可能オブジェクト(=長さn)については、r個の繰り返し抽出は許されない.
  • どちらを選ぶにしても重要なので、選ぶ順番は考えません.
  • combinations(반복 가능한 객체, r)

  • (Python)シーケンス、コンビネーション、重複シーケンス、重複コンビネーションを容易に実現