题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4992

题意:给出n,输出n的所有原根。

思路:求出n的一个原根x,那么对于所以的i,i<phi(n)且(i,phi(n))=1,x^i%n都是n的原根。

int Euler(int n)
{
    int i,ans=n;
    for(i=2;i*i<=n;i++) if(n%i==0)
    {
        ans=ans/i*(i-1);
        while(n%i==0) n/=i;
    }
    if(n>1) ans=ans/n*(n-1);
    return ans;
}

int prime[N],tag[N],cnt;

void init()
{
	int i,j;
	for(i=2;i<N;i++) if(!tag[i])
	{
		prime[cnt++]=i;
		for(j=i+i;j<N;j+=i) tag[j]=1;
	}
	tag[1]=1;
}

int get(int x)
{
	if(x%2==0) return 0;
	int i;
	for(i=0;i<cnt&&prime[i]*prime[i]<=x;i++) if(x%prime[i]==0)
	{
		while(x%prime[i]==0) x/=prime[i];
		if(x!=1) return 0;
		return prime[i];
	}
	return x;
}

int n;

int myPow(i64 x,i64 y)
{
	i64 ans=1;
	while(y)
	{
		if(y&1) ans=ans*x%n;
		x=x*x%n;
		y>>=1;
	}
	return (int)ans;
}

int ee;

vector<int> V;

int ok(int t)
{
	if(myPow(t,ee)!=1) return 0;
	int i;
	FOR0(i,SZ(V)) if(myPow(t,V[i])==1) return 0;
	return 1;
}

int Gcd(int x,int y)
{
	if(y==0) return x;
	return Gcd(y,x%y);
}

int main()
{

	init();
	while(scanf("%d",&n)!=-1)
	{
		if(n==2)
		{
			puts("1");
			continue;
		}
		if(n==4)
		{
			puts("3");
			continue;
		}

		int t=n%2==0?get(n/2):get(n);
		if(!t)
		{
			puts("-1");
			continue;
		}

		ee=Euler(n);
		V.clear();
		int i;
		for(i=2;i*i<=ee;i++) if(ee%i==0)
		{
			V.pb(i);
			if(i*i!=ee) V.pb(ee/i);
		}
		for(i=2;i<n;i++) if(ok(i)) break;
		int Min=i;
		vector<int> ans;
		for(i=1;i<ee;i++)
		{
			if(Gcd(i,ee)!=1) continue;
			ans.pb(myPow(Min,i));
		}
		sort(all(ans));
		for(i=0;i<SZ(ans);i++)
		{
			if(i) putchar(' ');
			printf("%d",ans[i]);
		}
		puts("");
	}
}

hdu4992 Primitive Roots(所有原根)的更多相关文章

  1. 【HDU 4992】 Primitive Roots (原根)

    Primitive Roots   Description We say that integer x, 0 < x < n, is a primitive root modulo n i ...

  2. POJ 1284 Primitive Roots 数论原根。

    Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2479   Accepted: 1385 D ...

  3. poj 1284 Primitive Roots (原根)

    Primitive Roots http://poj.org/problem?id=1284 Time Limit: 1000MS   Memory Limit: 10000K       Descr ...

  4. POJ_1284 Primitive Roots 【原根性质+欧拉函数运用】

    一.题目 We say that integer x, 0 < x < p, is a primitive root modulo odd prime p if and only if t ...

  5. POJ 1284:Primitive Roots 求原根的数量

    Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3381   Accepted: 1980 D ...

  6. [POJ1284]Primitive Roots(原根性质的应用)

    题目:http://poj.org/problem?id=1284 题意:就是求一个奇素数有多少个原根 分析: 使得方程a^x=1(mod m)成立的最小正整数x是φ(m),则称a是m的一个原根 然后 ...

  7. poj 1284 Primitive Roots(原根+欧拉函数)

    http://poj.org/problem?id=1284 fr=aladdin">原根 题意:对于奇素数p,假设存在一个x(1<x<p),(x^i)%p两两不同(0&l ...

  8. POJ 1284 Primitive Roots 原根

    题目来源:POJ 1284 Primitive Roots 题意:求奇素数的原根数 思路:一个数n是奇素数才有原根 原根数是n-1的欧拉函数 #include <cstdio> const ...

  9. POJ 1284:Primitive Roots(素数原根的个数)

    Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5709 Accepted: 3261 Descr ...

随机推荐

  1. -XX:+printGC

    -XX:+printGC 可以打印GC的简要信息[GC 4790K->374K(15872K), 0.0001606 secs][GC 4790K->374K(15872K), 0.000 ...

  2. (转)oracle 查看表所占用的空间大小

    1.查看表所占空间 SELECT   TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999')   CNT_MB     FROM   ...

  3. Dreamweaver 时间轴如何打开

    因为下午要辅导几个调皮捣蛋的小孩HTML, 什么能让他们感觉又简单又好玩而起又能提高他们的兴趣呢?DW中设置浮动广告吧!       想好了,动手去做.DwearmWeaver里面居然没了时间轴, 度 ...

  4. 批量修改照片名称的shell脚本

    代码这种经常完善的东西,其实是不太适合使用博客来发布的. 以下是一个批量修改照片名称的shell脚本: 事情是这样的,虽然手机拍的照片文件名是按照日期来确定的,但是是这种形式的 IMG_mmddYY_ ...

  5. C#和JavaScript交互(asp.net前台和后台互调)总结 (转)

    http://www.cnblogs.com/poleices/archive/2011/02/24/1963727.html C#代码与javaScript函数的相互调用: 1.如何在JavaScr ...

  6. 重要的事情说三遍:列表 ul / ol 等是块级元素,是块级元素,块级元素

    HTML 块级元素 大多数 HTML 元素被定义为块级元素或内联元素. 编者注:“块级元素”译为 block level element,“行内元素”译为 inline element. 块级元素在浏 ...

  7. AndroidUI自动化测试工具-UIautomator

    转自:http://www.cnblogs.com/rexmzk/archive/2012/12/26/2834380.html 最近公司在开展Android的自动化测试,美国那边的开发人员利用And ...

  8. window7快捷键

    新建文件夹:Shift +F10  松手  shift  + w 两遍 Enter   shift+F   Enter

  9. Spring的beans标签下可以有其他标签

    以前有对xsd(也就是schema文件)小做研究,有个小困惑,就是我们定义的元素只能使用定义的哪一些标签,比如<beans>下面就只能有自定义的哪一些,那为什么在引入<context ...

  10. IIS7.5真变态,服务器时间格式导致不生成WebResource.axd

    把时间调成HH:mm格式后,IIS不生成WebResource.axd了,,,从凌晨一点弄到现在......