• + 0 comments

    This solution with python , but has some test faild because of Time limit exceeded .

    import math import os import random import re import sys

    def power(x, y, p): result = 1 x = x % p while y > 0: if y & 1: result = (result * x) % p y = y >> 1 x = (x * x) % p return result

    def is_primitive_root(g, p, factors): for factor in factors: if power(g, (p - 1) // factor, p) == 1: return False return True

    def find_primitive_roots(p): primitive_roots = [] factors = set() # Find prime factors of p-1 for i in range(2, int(math.sqrt(p-1)) + 1): if (p - 1) % i == 0: factors.add(i) factors.add((p - 1) // i)

    for g in range(2, p):
        if is_primitive_root(g, p, factors):
            primitive_roots.append(g)
    return primitive_roots
    

    def smallest_primitive_root(p): primitive_roots = find_primitive_roots(p) return min(primitive_roots)

    if name == 'main': p = int(input().strip())

    smallest_root = smallest_primitive_root(p)
    total_roots = len(find_primitive_roots(p))
    
    print(smallest_root, total_roots)