VvyLw's Library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub

:heavy_check_mark: Euler's Phi-function
(C++/math/euler_phi.hpp)

Required by

Verified with

Code

#pragma once
namespace man {
template <std::integral T> constexpr inline T euler_phi(T n) noexcept {
	T ret = n;
	for(T i = 2; i * i <= n; ++i) {
	    if(n % i == 0) {
			ret -= ret / i;
			while(n % i == 0) {
				n /= i;
			}
		}
	}
	if(n > 1) {
		ret -= ret / n;
	}
	return ret;
}
}

/**
 * @brief Euler's Phi-function
 */
#line 2 "C++/math/euler_phi.hpp"
namespace man {
template <std::integral T> constexpr inline T euler_phi(T n) noexcept {
	T ret = n;
	for(T i = 2; i * i <= n; ++i) {
	    if(n % i == 0) {
			ret -= ret / i;
			while(n % i == 0) {
				n /= i;
			}
		}
	}
	if(n > 1) {
		ret -= ret / n;
	}
	return ret;
}
}

/**
 * @brief Euler's Phi-function
 */
Back to top page