BOJ/๐Ÿฅ‰

โ˜…Number Theory Upper-Beginner I - 15 Solvedโ˜…

metamong 2022. 8. 21.

โ˜… 2609 ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ โ˜…

 

A, B = map(int,input().split())

a, b = A, B
GCD, LCM = 0, 0

while True:
    if A == B:
        GCD = A
        print(GCD)
        break
    else:
        if A >= B:
            A = abs(A-B)
        else:
            B = abs(A-B)
    
print(a*b//GCD)

 

๐Ÿงš‍โ™‚๏ธ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ์ „ํ˜•์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜!

 

โ‘  math module - gcd, lcm

import math

a, b = map(int, input().split())

print(math.gcd(a, b))
print(math.lcm(a, b))

 

โ‘ก ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์‚ฌ์šฉ

→ ํ•ด๊ฒฐ๋ฒ•์€ function ์‚ฌ์šฉ - ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์ถœ๋ ฅ๊ฐ’๋งŒ ๋ฆฌํ„ดํ•ด์ฃผ๊ณ , ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ์€ A์™€ B๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. GCD์™€ LCM ๊ฐ๊ฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ฝ”๋”ฉํ•˜๋ฉด ๋จ

a, b = map(int, input().split())

def gcd(a, b):
    while b > 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return a * b // gcd(a, b)

print(gcd(a, b))
print(lcm(a, b))

 

โ˜… ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•) a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ r์ด๋ผ ํ•˜๋ฉด, a์™€ b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” b์™€ r์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ โ˜…

(1) function gcd) 

→ ํ•œ ์ชฝ ์ˆ˜ b๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ๋‚˜๋ˆ„๊ณ  ๋‚˜์˜จ ๋‚˜๋จธ์ง€๋ฅผ a์— ๊ณ„์† ์ €์žฅํ•ด, a์™€ 0์ด ๋˜๋Š” b๊ฐ€ ๋‚˜์˜ฌ ๋•Œ, a๊ฐ€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค.

a, b = b, a%b

 

(2) function lcm)

→ gcd๋ฅผ ๊ตฌํ–ˆ๋‹ค๋ฉด, ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ๊ฐ€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ (A x B = G x L)

 

โ‘ข ๊ณต์•ฝ์ˆ˜ ์ค‘ ์ตœ๋Œ“๊ฐ’

a, b = map(int, input().split())

tmp = []
for i in range(1, min(a,b) + 1):
    if a % i == 0 and b % i == 0:
        tmp.append(i)

print(max(tmp))
print(max(tmp) * (a // max(tmp)) * (b // max(tmp)))

 

 

→ ๋˜๋Š”, ์ตœ์†Ÿ๊ฐ’ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์–ด์ฐจํ”ผ '์ตœ๋Œ“๊ฐ’'์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ, ๋‘ ์ˆ˜ ์ค‘ ํ•œ ์ˆ˜ b๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ ์‹œ์ž‘ํ•ด ๊ณต์•ฝ์ˆ˜๋ฅผ ์ฐพ์•„๋‚ด, ์ฐพ์œผ๋ฉด ๋ฐ”๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋˜์–ด ์„ ์ •

import sys
input = sys.stdin.readline
 
a, b = map(int, input().split())
 
for i in range(b, 0, -1):
    if a % i == 0 and b % i == 0:
        print(i)
        print(i * a // i * b // i)
        exit()

 

โ‘ฃ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• - ์žฌ๊ท€ํ•จ์ˆ˜ ์‚ฌ์šฉ

→ a์™€ b์— b์™€ a%b๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ, gcd ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  return๋ฌธ์— gcd(b, a%b)๋ฅผ ๋„ฃ์–ด b๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๊ฒŒ!

a, b = map(int, input().split())

def gcd(a, b):
    if b == 0:
        return a
    return gcd(b, a % b)
    
print(gcd(a, b), a*b//gcd(a, b))

โ˜… 1037 ์•ฝ์ˆ˜ โ˜…

 

N = int(input())

divisors = list(map(int, input().split()))
n = sorted(divisors)
print(n[0] * n[len(n)-1])

โ˜… 1934 ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ โ˜…

import sys
input = sys.stdin.readline

for _ in range(int(input())):
    A, B = map(int, input().split())
    
    a,b=A,B
    while b!= 0:
        a,b=b,a%b
    
    print(A*B//a)

 

๐Ÿงš‍โ™‚๏ธ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜ & ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ & ๋‘ ์ˆ˜์˜ ๊ด€๊ณ„

→ ๋‘ ์ˆ˜ A์™€ B๊ฐ€ ์žˆ๊ณ , ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ G, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ L์ด๋ผ ํ•œ ๋’ค, A๋ฅผ G๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ a, B๋ฅผ G๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ b๋ผ ํ•˜๋ฉด

โ˜… L = G * a * b โ˜…

โ˜… L * G = A * B โ˜…

 

๐Ÿงš‍โ™‚๏ธ math ์‚ฌ์šฉ์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ์œ„์™€ ๊ฐ™์ด ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์œผ๋กœ G๋ฅผ ๊ตฌํ•œ ๋’ค, ์œ„ L๊ณผ G์˜ ๊ณต์‹์— ์˜ํ•ด L์„ ๊ตฌํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ ์—†์ด ๋น ๋ฅธ ์‹œ๊ฐ„ ๋‚ด์— ์ฝ”๋“œ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ํ™•์ธ ๊ฐ€๋Šฅ


โ˜… 15633 Fan Death โ˜…

n = int(input())
res = 0
for i in range(1,int(n**(1/2))+1,1):
    if n%i == 0:
        res += i
        if i != n**(1/2):
            res += (n//i)
print(res*5-24)

 

๐Ÿงš‍โ™‚๏ธ ์ฃผ์–ด์ง„ ์ˆ˜์˜ ์•ฝ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

→ 1๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ์ˆ˜ ๋๊นŒ์ง€ ๋ˆ๋‹ค๋ฉด ์‹œ๊ฐ„ ํšจ์œจ์„ฑ์—์„œ ๋น„ํšจ์œจ์ ์ด๋ผ ํŒ๋‹จํ•˜์—ฌ ์ฃผ์–ด์ง„ ์ˆ˜์˜ ์ œ๊ณฑ๊ทผ ๋ฒ”์œ„๊นŒ์ง€๋งŒ ๋Œ๊ฒŒ ํ•˜์˜€๋‹ค.

 

โ‘  range()์— ์˜ํ•ด n**(1/2)๋ฅผ int()ํ•œ๋‹ค์Œ, 1์„ ๋”ํ•ด ์ •ํ™•ํžˆ for๋ฌธ์ด int(n**(1/2))๊นŒ์ง€๋งŒ ๋Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

โ‘ก ๋งŒ์•ฝ ์ œ๊ณฑ์ˆ˜์ผ ๊ฒฝ์šฐ ๋‘ ๋ฒˆ ์นด์šดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด i != n**(1/2) ์กฐ๊ฑด์„ ๊ฑด๋‹ค.

(โ€ป์ด ๋•Œ, i != int(n**(1/2))์ผ ๊ฒฝ์šฐ ์ œ๊ณฑ์ˆ˜๊ฐ€ ์•„๋‹˜์—๋„ ์กฐ๊ฑด์ด True๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ (ex) 3์˜ ์•ฝ์ˆ˜ 1) int๋Š” ๋ฐ˜๋“œ์‹œ ์ œ์™ธ!)


โ˜… 6030 Scavenger Hunt โ˜…

P,Q=map(int,input().split())
Ps = [i for i in range(1,P+1) if P%i == 0]
Qs = [i for i in range(1,Q+1) if Q%i == 0]
for p in Ps:
    for q in Qs:
        print(p,q)

โ˜… 9506 ์•ฝ์ˆ˜๋“ค์˜ ํ•ฉ โ˜…

 

while 1:
    n=int(input())
    if n==-1:break
    end=int(n**(1/2))
    l=[]
    for i in range(2,end+1):
        if n%i==0:
            l.extend((i,n//i))
    l.append(1)
    if sum(l)==n:
        l.sort()
        print(n,'=',end=' ')
        print(*l,sep=' + ')
    else:print(f'{n} is NOT perfect.')

 

๐Ÿงš‍โ™‚๏ธ ์ „์ฒด๋ฅผ ๋Œ์ง€ ์•Š๊ณ  ์ˆ˜์˜ root๋ฒ”์œ„๊นŒ์ง€๋งŒ ๋Œ์•„ ์•ฝ์ˆ˜์ธ์ง€ ํŒ๋‹จ


โ˜… 6888 Terms of Office โ˜…

X=int(input())
Y=int(input())

for i in range(X,Y+1,60):
    print(f'All positions change in year {i}')

 

๐Ÿงš‍โ™‚๏ธ๋งค 4๋…„, 2๋…„, 3๋…„, ๊ทธ๋ฆฌ๊ณ  5๋…„์˜ ์ฃผ๊ธฐ๋ฅผ ๊ฐ–๋Š” ์„ ์ถœ ์‚ฌ์ดํด์—์„œ ์–ด๋–ค ํ•ด๊ฐ€ ๋™์‹œ์— ๋ฝ‘๋Š” ์ง€ ์•Œ์•„๋ณด๋Š” ๋ฌธ์ œ. 4, 2, 3, 5์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์ธ 60๋…„์˜ ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์งˆ ๋•Œ ํ•ด๋‹น๋œ๋‹ค.


โ˜… 14682 Shifty Sum โ˜…

 

print(int(input())*int('1'*(int(input())+1)))

 

๐Ÿงš‍โ™‚๏ธ ๋‹จ์ˆœ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์ง€๋งŒ, shitfy sum์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด ์ •์ˆ˜๋ก  ๊ด€์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด๋ณด๋ฉด, ๋™์ผํ•œ ์ˆ˜๊ฐ€ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ์”ฉ ์›€์ง์ด๋ฏ€๋กœ ํ•œ ์นธ์”ฉ ์›€์ง์ผ ๋•Œ๋งˆ๋‹ค ๋™์ผํ•œ ์ˆ˜์˜ 10๋ฐฐ๋งŒํผ ํ•ด๋‹น ์ˆ˜๊ฐ€ ์ปค์ง„๋‹ค. ๋”ฐ๋ผ์„œ x๋ฒˆ ์ด๋™ํ–ˆ๋‹ค๋ฉด 1์ด x๋ฒˆ ์žˆ๊ณ  ๋งจ ๋งˆ์ง€๋ง‰ ์ˆ˜๊ฐ€ 0์ธ ๋ฐฐ์ˆ˜๋งŒํผ ๊ณฑํ•ด์ง

 

๐Ÿงš‍โ™‚๏ธ์ถ”๊ฐ€๋กœ, ๋‚˜ ์ž์‹ ๋„ ๋”ํ•ด์ ธ์•ผ ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ 1์„ ๋”ํ•จ → ๊ฒฐ๊ณผ์ ์œผ๋กœ 1์ด (x+1)๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ ์ˆ˜๋งŒํผ ๊ณฑํ•ด์ง


โ˜… 8678 Zbiór โ˜…

 

import sys
input=sys.stdin.readline

for _ in range(int(input())):
    a,b=map(int,input().split())
    if b%a==0:print('TAK')
    else: print('NIE')

 

๐Ÿงš‍โ™‚๏ธ a์˜ ๋ชจ๋“  ์•ฝ์ˆ˜๋Š” b์˜ ๋ชจ๋“  ์•ฝ์ˆ˜์— ํฌํ•จ๋œ๋‹ค๋Š” ๊ฑด, a๊ฐ€ b์— ๋‚˜๋ˆ ์ง„๋‹ค๋Š” ๋œป. b๋ฅผ a๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋‹ค.


โ˜… 27465 ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ˆ˜ โ˜…

 

print(10**9)

 

๐Ÿงš‍โ™‚๏ธ 10์˜ 9์Šน์€ ๋ฌด์กฐ๊ฑด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ํ•ญ์ƒ ๋‹ต์ด ๋จ!


โ˜… 5086 ๋ฐฐ์ˆ˜์™€ ์•ฝ์ˆ˜ โ˜…

 

while 1:
    a,b=map(int,input().split())
    if (a,b) == (0,0): break
    if b%a == 0: print('factor')
    elif a%b == 0: print('multiple')
    else: print('neither')

โ˜… 11653 ์†Œ์ธ์ˆ˜๋ถ„ํ•ด โ˜…

 

N=int(input())

def isPrime(n):
    end=int(n**(1/2))
    for i in range(2,end+1):
        if n%i==0:
            return False
    return True
if N==1:
    pass
else:
    ans=[]
    x=2
    while N>1:
        if len(ans) != 0 and N%ans[-1] == 0:
            late_prime = ans[-1]
            ans.append(late_prime)
            N//=(late_prime)
        else:
            if N%x == 0:
                if isPrime(x):
                    ans.append(x)
                    N//=x
            x+=1
    print(*ans,sep='\n')

 

๐Ÿงš‍โ™‚๏ธ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋Š” ์†Œ์ˆ˜์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„๋˜๊ฒŒ๋” ์ฃผ์–ด์ง„ ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋กœ๋งŒ ํ‘œํ˜„ํ•˜๋Š” ๋ถ„ํ•ด์ด๋‹ค.

 

๐Ÿงš‍โ™‚๏ธ ์œ„์™€ ๊ฐ™์ด ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ง€, ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•œ ๋‹ค์Œ 1์”ฉ ๋”ํ•ด๊ฐ€๋ฉฐ ์ผ์ผ์ด ํ™•์ธํ•˜๋Š” ๊ณผ์ •๋„ ์žˆ๋‹ค.

 

๐Ÿงš‍โ™‚๏ธ+ ์‹œ๊ฐ„ ๋‹จ์ถ• ํ’€์ด + (์†Œ์ธ์ˆ˜๋ถ„ํ•ด ํ’€์ด ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ต!) ๐Ÿงš‍โ™‚๏ธ

1) 2๋ถ€ํ„ฐ sqrt{N}๊นŒ์ง€ ํ™•์ธ (2๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋ฉด ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•  ํ•„์š” x)

2) ๋งŒ์•ฝ ๋‚˜๋ˆ„์–ด์ง„๋‹ค๋ฉด, ๋™์ผํ•œ ์ˆ˜๋กœ ๊ณ„์† ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ง€ while๋ฌธ์œผ๋กœ ํ™•์ธ

3) root๊นŒ์ง€ ํ™•์ธํ•˜์˜€์œผ๋ฏ€๋กœ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ๋งŒ์•ฝ 1์ด ์•„๋‹ˆ๋ผ๋ฉด ํฐ ์†Œ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ๋‚จ์€ ๊ฒƒ์ด๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ๊ฐ€์žฅ ํฐ ์†Œ์ธ์ˆ˜ ์ถœ๋ ฅํ•˜๊ณ  ๋

(๋” ํฐ ์ˆ˜์˜ ์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋Š” euler sieve ํ™œ์šฉ: ๋ณ„๋„ ํฌ์ŠคํŒ… ์ฐธ์กฐ)

n = int(input())
for i in range(2, int(n**0.5)+1):
    while n%i == 0:
        n //= i
        print(i)
if n!=1:print(n)

โ˜… 1145 ์ ์–ด๋„ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฐ์ˆ˜ โ˜…

 

๐Ÿงš‍โ™‚๏ธ์„ธ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” (1)๊ณผ (2)์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•œ ๊ฒฐ๊ณผ์™€ (3)๊ณผ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

 

๐Ÿงš‍โ™‚๏ธ ์ฆ‰, N๊ฐœ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” (1)๊ณผ (2)์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•œ ๊ฒฐ๊ณผ์™€ (3)๊ณผ์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ - ๊ทธ ๋‹ค์Œ ๊ตฌํ•œ ๊ฒฐ๊ณผ์™€ (4)์™€์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ .. ์ด๋ ‡๊ฒŒ ๊ณ„์† update

import math
from itertools import combinations
def lcm(a,b):
    return (a*b)//(math.gcd(a,b))

l=list(map(int,input().split()))
ans=1000000
for numbers in combinations(l,3):
    a,b,c=numbers
    x = lcm(lcm(a,b),c)
    ans=min(ans,x)
print(ans)

 

* 1000000๋กœ ans ์ดˆ๊ธฐ๊ฐ’ ์„ค์ • - combinations()๋กœ ์„ธ ์Œ์”ฉ choice - ans update

* ๋‘ ์ˆ˜์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = (๋‘ ์ˆ˜์˜ ๊ณฑ) / (๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜)


โ˜… 1978 ์†Œ์ˆ˜ ์ฐพ๊ธฐ โ˜…

 

โ‘  2๋ถ€ํ„ฐ (์ž๊ธฐ์ž์‹  -1) ๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ์ž๊ธฐ์ž์‹ ์—์„œ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ ๋ชจ๋‘ 0์ด ์•„๋‹ˆ๋‹ค. O(N)

→ ๋‚˜๋จธ์ง€๊ฐ€ ๋ชจ๋‘ 0์ด ์•„๋‹Œ ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ (์ž๊ธฐ์ž์‹  -2)๋ผ๋ฉด ์†Œ์ˆ˜

result = 0
N = int(input())

for number in list(map(int, input().split())):

    cnt = 0       
    for j in range(2,number):
        if number%j != 0:
            cnt += 1
        
    if cnt == (number -2):
            result += 1 
            
print(result)

 

โ‘ก ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์ด๋‹ค O(N)

r=0
input()
for n in list(map(int,input().split())):
    l = [j for j in range(1,n+1) if n%j==0]
    if len(l) == 2 : r+=1
print(r)

 

โ‘ข N์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ๊ฒ€์‚ฌ O(\sqrt{N})

→ ์•ฝ์ˆ˜๋Š” N์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ง€ ๊ฒ€์‚ฌํ•˜๋ฉด ๋จ. (์•ฝ์ˆ˜๋Š” N์˜ ์ œ๊ณฑ๊ทผ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ฒ”์œ„ ํƒ์ƒ‰ ์‹œ๊ฐ„ ํšจ์œจ์ ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Œ)

→ ๋‹ค๋งŒ N์˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐ€ ์•„๋‹Œ 1๋กœ ํŒ๋ณ„ํ•ด์•ผ ํ•˜๊ณ , 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ 1๋งŒ ์นด์šดํŠธ์—์„œ ์ œ์™ธํ•˜๋Š” ์ ์„ ์ฃผ์˜!

r=0
input()
for n in list(map(int,input().split())):
    if n == 1:
        continue
    l=[j for j in range(1,int(n**(1/2))+1)if n%j==0]
    if len(l)==1:r+=1
print(r)

 

→ ์ œ๊ณฑ๊ทผ๊นŒ์ง€๋งŒ ๊ฒ€์‚ฌํ•ด์„œ 72ms → 68ms๋กœ ์‹œ๊ฐ„ ์†Œ์š” ๋œํ•จ!

 

โ‘ฃ N/2๊นŒ์ง€๋งŒ ๊ฒ€์‚ฌ O(N)

→ โ‘ข์— ๋น„ํ•ด ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ๋” ์†Œ์š”๋˜์ง€๋งŒ, ์ผ์ผ์ด N๊นŒ์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ํ’€์ด์— ๋น„ํ•ด์„  ํ›จ์”ฌ ํšจ์œจ์ !

→ N์˜ ์•ฝ์ˆ˜๋Š” ์ตœ๋Œ€ N/2 ๋ฒ”์œ„ ์ด๋‚ด์—๋งŒ ๋“ค์–ด๊ฐ€ ์žˆ์Œ์„ ์•ˆ๋‹ค๋Š” ์กฐ๊ฑด ํ•˜์— ์ง„ํ–‰ํ•˜๋Š” ํ’€์ด์ด๋‹ค.

 

โ‘ค ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด

๐ŸŒŸ ์†Œ์ˆ˜ ํŒ๋ณ„ํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ์•Œ์•„์•ผ ํ•˜๋Š” ํŒ๋ณ„๋ฒ•! ์ถ”ํ›„ ๋ฌธ์ œ๋กœ ์„ค๋ช… ์˜ˆ์ •

 

โ‘ฅ ์†Œ์ˆ˜๋Š” 2 ๊ทธ๋ฆฌ๊ณ  3 ๊ทธ๋ฆฌ๊ณ  6์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1๋˜๋Š” 5์ด๋‹ค.

→ ๋ชจ๋“  ์ž์—ฐ์ˆ˜๋Š” 6k, 6k+1, 6k+2, 6k+3, 6k+4, 6k+5๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , ์—ฌ๊ธฐ์„œ 6k+1๊ณผ 6k+5 ์ œ์™ธ ๋‹ค๋ฅธ ํ˜•ํƒœ๋Š” 2๋˜๋Š” 3์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์†Œ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด 6์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1๋˜๋Š” 5์ผ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ 2์™€ 3๋งŒ ๋ฐฐ์ œํ•œ๋‹ค. 

r=0
input()
for n in list(map(int,input().split())):
    if n == 1: continue
    if n%6 in [1,5] or n in [2,3]:
        l=[j for j in range(1,int(n**(1/2))+1)if n%j==0]
        if len(l)==1:r+=1
print(r)

โ˜… 2581 ์†Œ์ˆ˜ โ˜…

 

import math
def is_prime(n):
    if n == 1:
        return False
    for j in range(2,int(math.sqrt(n))+1):
        if n%j==0:
            return False
    return True

M=int(input())
N=int(input())
flag,ans,least=0,0,0

for i in range(M,N+1):
    if is_prime(i):
        ans+=i
        if flag==0:
            least=i
            flag+=1

if least==0:print(-1)
else:print(ans,least,sep='\n')


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'BOJ > ๐Ÿฅ‰' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

โ˜…Basics II - 50 Solvedโ˜…  (0) 2022.09.08
โ˜…Implementation Beginner I - 50 Solvedโ˜…  (0) 2022.08.22
โ˜…Implementation Basics II - 24 Solvedโ˜…  (0) 2022.08.17
โ˜…Math Beginner I - 30 Solvedโ˜…  (0) 2022.08.16
โ˜…Implementation Basics I - 50 Solvedโ˜…  (0) 2022.08.04

๋Œ“๊ธ€