HDU2.1.5 找新朋友

 花里胡哨的一堆东西,其实就是在区间[1,N],求N的互质数有多少个。

这里引入一个欧拉函数的概念:(欧拉真的高产似母猪)

f(n)=n*Π((p-1)/p) p为n的质因数

#include
#include
#include
#define maxn 1000005
using namespace std;
int s[maxn];
int prime(int n){
	int cnt=0;
	//获得n的质因数
	if(n%2==0) s[cnt++]=2;
	while(n%2==0){
		n/=2;
	}
	for(int i=3;i<=sqrt(1.0*n);i+=2){
		if(n%i==0){
			s[cnt++]=i;
			n/=i;
		}
		while(n%i==0){
			n/=i;
		}
	}
	if(n>2){
		s[cnt++]=n;
	}
	return cnt; 
}
int wula(int n){
	int cnt = prime(n);
	double f=n;
	for(int i=0;i>cn;
	while(cn--){
		memset(s,0,sizeof(s));
		cin>>n;
		cout<

 

你可能感兴趣的:(ACM)