


'''simple docstring'''




import math





def 							a_       (						lowercase    )			->list:






    '''simple docstring'''

    if n <= 0:
        raise ValueError("Only positive integers have prime factors"    )
    __lowerCamelCase		:      List[str]											=					[]
    while n % 2 == 0:
        pf.append(2    )
        __lowerCamelCase		:      str											=					int(n / 2    )
    for i in range(3							,						int(math.sqrt(lowercase    )    ) + 1							,						2    ):
        while n % i == 0:
            pf.append(lowercase    )
            __lowerCamelCase		:      Dict											=					int(n / i    )
    if n > 2:
        pf.append(lowercase    )
    return pf





def 							a_       (						lowercase    )			->int:






    '''simple docstring'''

    if n <= 0:
        raise ValueError("Only positive numbers are accepted"    )
    __lowerCamelCase		:      List[Any]											=					1
    __lowerCamelCase		:      Dict											=					1
    while n % 2 == 0:
        temp += 1
        __lowerCamelCase		:      str											=					int(n / 2    )
    div *= temp
    for i in range(3							,						int(math.sqrt(lowercase    )    ) + 1							,						2    ):
        __lowerCamelCase		:      List[Any]											=					1
        while n % i == 0:
            temp += 1
            __lowerCamelCase		:      Tuple											=					int(n / i    )
        div *= temp
    if n > 1:
        div *= 2
    return div





def 							a_       (						lowercase    )			->int:






    '''simple docstring'''

    if n <= 0:
        raise ValueError("Only positive numbers are accepted"    )
    __lowerCamelCase		:      List[Any]											=					1
    __lowerCamelCase		:      Dict											=					1
    while n % 2 == 0:
        temp += 1
        __lowerCamelCase		:      List[str]											=					int(n / 2    )
    if temp > 1:
        s *= (2**temp - 1) / (2 - 1)
    for i in range(3							,						int(math.sqrt(lowercase    )    ) + 1							,						2    ):
        __lowerCamelCase		:      Optional[int]											=					1
        while n % i == 0:
            temp += 1
            __lowerCamelCase		:      List[Any]											=					int(n / i    )
        if temp > 1:
            s *= (i**temp - 1) / (i - 1)
    return int(lowercase    )





def 							a_       (						lowercase    )			->int:






    '''simple docstring'''

    __lowerCamelCase		:      Optional[Any]											=					n
    for x in set(prime_factors(lowercase    )    ):
        s *= (x - 1) / x
    return int(lowercase    )


if __name__ == "__main__":
    import doctest

    doctest.testmod()









'''simple docstring'''




# tests directory-specific settings - this file is run automatically
# by pytest before any tests are run

import sys
import warnings
from os.path import abspath, dirname, join


# allow having multiple repository checkouts and not needing to remember to rerun
# 'pip install -e .[dev]' when switching between checkouts and running tests.
__lowercase  :      Tuple      		=				abspath(join(dirname(dirname(dirname(__file__))), """src"""))
sys.path.insert(1, git_repo_path)


# silence FutureWarning warnings in tests since often we can't act on them until
# they become normal warnings - i.e. the tests still need to test the current functionality
warnings.simplefilter(action="""ignore""", category=FutureWarning)





def 							a_       (						lowercase    )			->Any:






				'''simple docstring'''

				from diffusers.utils.testing_utils import pytest_addoption_shared

				pytest_addoption_shared(lowercase    )





def 							a_       (						lowercase    )			->str:






				'''simple docstring'''

				from diffusers.utils.testing_utils import pytest_terminal_summary_main

				__lowerCamelCase		:      Union[str, Any]											=					terminalreporter.config.getoption("--make-reports"    )
				if make_reports:
								pytest_terminal_summary_main(lowercase							,						id=lowercase    )





