
100부터 1000사이의 난수중 약수,소수,소인수를 출력하기
import random
rNum = random.randint(100,1000)
print(f'rNum: {rNum}')
for num in range(1,rNum+1):
soinsuflag = 0
# 약수
if rNum % num == 0:
print(f'[약수] : {num}')
soinsuflag += 1
# 소수
if num != 1:
flag = True
for n in range(2, num):
if num % n == 0:
flag = False
break
if(flag):
print(f'[소수] : {num}')
soinsuflag += 1
# 소인수
if soinsuflag >= 2:
print(f'[소인수] : {num}')
100부터 1000사이의 난수를 소인수분해를 하고 각각의 소인수에 대한 지수를 출력하기
import random
rNum = random.randint(100,1000)
print(f'rNum: {rNum}')
soinsuList = []
n = 2
while n <= rNum:
if rNum % n == 0:
print(f'소인수: {n}')
soinsuList.append(n)
# rNum = rNum / n
rNum /= n
else:
n += 1
print(f'soinsuList: {soinsuList}')
tempNum = 0
for s in soinsuList:
if tempNum != s:
print(f'{s}\'s count: {soinsuList.count(s)}')
tempNum = s
100부터 1000사이의 2개의 난수에 대해서 공약수와 최대공약수를 출력하고, 서로소인지 출력하기
import random
num1 = random.randint(100,1000)
num2 = random.randint(100,1000)
print(f'num: {num1}, {num2}')
maxNum = 0
for n in range(1, (min(num1,num2)+1)):
if num1 % n == 0 and num2 % n == 0:
print(f'공약수: {n}')
maxNum = n
print(f'최대공약수 : {maxNum}')
if maxNum == 1:
print(f'{num1}과{num2}는 서로소 이다.')
00부터 1000사이의 2개의 난수에 대해서 최대공약수와 최소공배수를 출력하기
import random
num1 = random.randint(100,1000)
num2 = random.randint(100,1000)
print(f'num: {num1}, {num2}')
maxNum = 0
for n in range(1, (min(num1,num2)+1)):
if num1 % n == 0 and num2 % n == 0:
print(f'공약수: {n}')
maxNum = n
print(f'최대공약수 : {maxNum}')
minNum = (num1 * num2) // maxNum
print(f'최소공배수 : {minNum}')
진법 변환하는 코드 작성하기
num = int(input('숫자를 입력하세요 : '))
print('2진수: {}'.format(bin(num)))
print('8진수: {}'.format(oct(num)))
print('16진수: {}'.format(hex(num)))
print('2진수(0b101110) -> 10진수({})'.format(int('0b101110',2)))
print('8진수(0o135) -> 10진수({})'.format(int('0o135',8)))
print('16진수(0x6c) -> 10진수({})'.format(int('0x6c',16)))
print('2진수(0b101110) -> 8진수({})'.format(oct(0b101110)))
print('2진수(0b101110) -> 10진수({})'.format(int(0b101110)))
print('2진수(0b101110) -> 16진수({})'.format(hex(0b101110)))
print('8진수(0o125) -> 2진수({})'.format(bin(0o125)))
print('8진수(0o125) -> 10진수({})'.format(int(0o125)))
print('8진수(0o125) -> 16진수({})'.format(hex(0o125)))
print('16진수(0x1e2) -> 2진수({})'.format(bin(0x1e2)))
print('16진수(0x1e2) -> 8진수({})'.format(oct(0x1e2)))
print('16진수(0x1e2) -> 10진수({})'.format(int(0x1e2)))
등차수열
inputA1 = int(input('a1 입력 : '))
inputD = int(input('공차 입력 : '))
inputN = int(input('n 입력 : '))
valueN = 0; sumN = 0
n = 1
while n <= inputN:
if n == 1:
valueN = inputA1
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 값: {}'.format(n, sumN))
n += 1
continue
valueN += inputD
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 값: {}'.format(n, sumN))
n += 1
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 값: {}'.format(inputN, sumN))
등비수열
inputA1 = int(input('a1 입력 : '))
inputR = int(input('공비 입력 : '))
inputN = int(input('n 입력 : '))
valueN = 0; sumN = 0
n = 1
while n <= inputN:
if n == 1:
valueN = inputA1
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 값: {}'.format(n, sumN))
n += 1
continue
valueN *= inputR
sumN += valueN
print('{}번째 항의 값: {}'.format(n, valueN))
print('{}번째 항까지의 값: {}'.format(n, sumN))
n += 1
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 값: {}'.format(inputN, sumN))
피보나치 수열
inputN = int(input('n 입력 : '))
valueN = 0; sumN = 0
valuePrev2 = 0
valuePrev1 = 0
n = 1
while n <= inputN:
if n == 1 or n == 2:
valueN = 1
valuePrev2 = valueN
valuePrev1 = valueN
sumN += valueN
n += 1
else:
valueN = valuePrev2 + valuePrev1
valuePrev2 = valuePrev1
valuePrev1 = valueN
sumN += valueN
n += 1
print('{}번째 항의 값: {}'.format(inputN, valueN))
print('{}번째 항까지의 값: {}'.format(inputN, sumN))
팩토리얼
def facFun(n):
fac = 1
for n in range(1,(n+1)):
fac *= n
return fac
def facFun2(n):
if n == 1:
return n
return n * facFun2(n-1)
inputN = int(input('n 입력 : '))
print(f'{inputN}!: {facFun2(inputN)}')
import math
print(math.factorial(10))
군수열
flag = True
n = 1
nCnt = 1; searchNC = 0; searchNP = 0
sumN = 0
while flag:
for i in range(1, (n+1)):
print('{}/{} '.format(i, (n - i + 1)), end='')
sumN += i / (n - i + 1)
nCnt += 1
if sumN > 100:
searchNC = i
searchNP = n - i + 1
flag = False
break
print()
n += 1
print('100초과하는 항, 값, 합: {}항 , {}/{}, {}'.format(nCnt, searchNC, searchNP, sumN))
순열
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
result = 1
for n in range(numN, (numN - numR), -1):
print('n : {}'.format(n))
result = result * n
print(result)
조합
numN = int(input('numN 입력 : '))
numR = int(input('numR 입력 : '))
resultP = 1
resultR = 1
resultC = 1
for n in range(numN, (numN - numR), -1):
resultP *= n
print(f'resultP : {resultP}')
for n in range(numR, 0 , -1):
resultR = resultR * n
print(f'resultR : {resultR}')
resultC = int(resultP / resultR)
print(f'resultC : {resultC}')
이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.