| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 534 人关注过本帖
标题:求二次同余式:x 2≡a (mod p), p为素数
只看楼主 加入收藏
jeffzeng
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-15
收藏
 问题点数:0 回复次数:0 
求二次同余式:x 2≡a (mod p), p为素数
写一个程序,各位大虾帮我改改我的程序
#include   <iostream>
#include <math.h>
using   namespace   std;

int   one(int   m)
{
  
if(   m%4   ==   1   ) return   1;
if(   m%4   ==   3   ) return   -1;

}

int   two(int   m)
{

if(   m%8   ==   1   ||   m%8   ==   7   ) return   1;

if(   m%8   ==   3   ||   m%8   ==   5   ) return   -1;

}


int   main()
{

int   m,   p,   q,   s,   t,     mul=1,i,n;

cout   <<   "请输入一个奇素数   p   和一个与它互素的正整数   m   :\n\n ";
cout    <<   "p   =   ";
cin     >>   p;   
cout   <<   "m   =   ";
cin     >>   m;
cout   <<   endl;

s=m;   t=p;

loop: if(   m> p   )
{
m%=p;

}

while(   m%2   ==   0   )
{
m/=2;
mul*=two(p);
}

if(   m   ==   -1   )
{
mul*=one(p);
goto   mark;
}

if(   m   ==   1   )
{
goto   mark;
}

q=p;   p=m;   m=q;

if(   (p-1)*(m-1)%8   )
{
mul*=-1;
}

goto   loop;

mark: cout   <<   "雅可比符号   ( ";
cout   <<   s   <<   "   /   "   <<   t;
cout   <<   "   )   的值为\t "   <<   mul   <<   endl   <<   endl;

if(mul==1)
{
cout   <<   "因此 "   <<   s   <<   "为模 "   <<   t   <<   "的二次剩余 "     <<   endl;
for(i=1;;i++){
n=sqrt(p*i+m);
if(n==(int)n)break;
}
cout<<n<<endl;

}

else   
{
cout   <<   "因此 "   <<   s   <<   "不是模 "   <<   t   <<   "的二次剩余 "     <<   endl;
}

return   0;

}

搜索更多相关主题的帖子: mod 素数 同余式 
2010-06-15 10:27
快速回复:求二次同余式:x 2≡a (mod p), p为素数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020157 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved