このC++をPythonに変換しようとしています。私はPythonのみを練習しており、C /C++にはまだ触れていません。
int phi(const int n)
{
// Base case
if ( n < 2 )
return 0;
// Lehmer's conjecture
if ( isprime(n) )
return n-1;
// Even number?
if ( n & 1 == 0 ) {
int m = n >> 1;
return !(m & 1) ? phi(m)<<1 : phi(m);
}
// For all primes ...
for ( std::vector<int>::iterator p = primes.begin();
p != primes.end() && *p <= n;
++p )
{
int m = *p;
if ( n % m ) continue;
// phi is multiplicative
int o = n/m;
int d = binary_gcd(m, o);
return d==1? phi(m)*phi(o) : phi(m)*phi(o)*d/phi(d);
}
}
そのほとんどは変換が簡単で、C++演算子を検索するだけです。ただし、このビット:
for ( std::vector<int>::iterator p = primes.begin();
p != primes.end() && *p <= n;
++p )
Pythonではどういう意味ですか?