| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1035 人关注过本帖
标题:大数的平方运算
取消只看楼主 加入收藏
可见光
Rank: 1
等 级:新手上路
帖 子:143
专家分:0
注 册:2007-6-15
收藏
 问题点数:0 回复次数:0 
大数的平方运算
#include "stdafx.h"
#include "conio.h"
#include <stdio.h>
void square(unsigned int *R1,int t, unsigned int *R_square,int h)
{
 unsigned __int64 tempxy,temp1,temp2,temp3,temp,tempc,tempz,x,c;int i,j;
 unsigned int y;
 c=0;
 for(i=0;i<t;i++)
 {
  tempxy=c+(__int64)R1[i]*R1[i];
  x=tempxy>>32;
  y=(unsigned int)tempxy&0xffffffff;
     c=x;
  R_square[2*i]=y;
  for(j=i+1;j<t;j++)
  {
   temp1=(__int64)R1[i]*R1[i];
   temp2=(__int64)temp1+R_square[i+j];
   temp3=(__int64)temp1+c;
   tempxy=(__int64)temp2+temp3;
   if(tempxy<temp2||tempxy<temp3)
    temp=1;
   else
    temp=0;
   x=tempxy>>32;
   y=(unsigned int)tempxy&0xffffffff;
   tempc=temp<<32;
   x=x|tempc;
   c=x;
   R_square[i+j]=y;
  }
  R_square[i+t]=x;
  R_square[i+t+1]=temp;
   }
 printf("\n");
 for(i=0;i<2*t;i++)
 printf("%08x",R_square[2*t-1-i]);
}
int main()
{
   int i,h,t;__int64 a;
   unsigned int *R1;R1=new unsigned int[32];
   unsigned int *R2;R2=new unsigned int[32];
   unsigned int *R_add;R_add=new unsigned int[64];  
    for(i=0;i<32;i++)
   {
    R1[i]=0xffffffff;
    R2[i]=0xffffffff;
   }
     for(i=0;i<64;i++)
   {
    R_add[i]=0x0;
   }
  h=t=32;
 square(R1,h, R_add,64);
  getch();
    }


我现在写的是大数平方运算的程序,可是结果就是不对。。
我用的是32个0xffffffff的平方,结果应该是前面的1024是f,然后是1023个0最后是1
大家帮忙看看是什么地方出了问题吧
搜索更多相关主题的帖子: 大数 平方 运算 
2007-11-27 09:32
快速回复:大数的平方运算
数据加载中...
 
   



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

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