Cod sursa(job #2528471)

Utilizator arosearose red arose Data 21 ianuarie 2020 22:14:32
Problema Fractii Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 0.76 kb
a=int(open('fractii.in','r').read())
t=a

import math
def get_phi(div,nr):
    rez = nr
    for d in div:
        rez = rez * (1-1/d)
    return nr-math.floor(rez)-1

dic = {1:set([1])}
i=2
while i<=a:
    if i in dic:
        i+=1
        continue
    dic[i] = set([i])
    j = 2
    while i*j <= a:
        if i*j not in dic:
            if j in dic:
                dic[i*j] = dic[j].union(set([i]))
            else:
                dic[i*j] = set([i,j])
        j+=1
    i+=1


def gcd(a,b):
    if b==0:
        return a
    return gcd(b,a%b)
#print(dic)
for i in range(2,a+1):
    prod = 0
    for d in dic[i]:
        prod += a//d - i//d
    #print(i, a - prod - get_phi(dic[i],i))
    t += a - prod  - get_phi(dic[i],i)-1

#print(t)
open('fractii.out','w').write("%d"%t)