当前位置: 代码迷 >> C语言 >> 大数的平方运算
  详细解决方案

大数的平方运算

热度:496   发布时间:2007-11-27 09:32:47.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
大家帮忙看看是什么地方出了问题吧
搜索更多相关的解决方案: 大数  平方  运算  

----------------解决方案--------------------------------------------------------
32个0xffffffff的平方

?????????
----------------解决方案--------------------------------------------------------
  相关解决方案