資源簡介
shor量子算法中含有一個連分數的處理算法,此為改節算法的源代碼,可以為進行shor算法的仿真實現提供現成資源。
代碼片段和文件信息
#include
#include
#include
Euclid(int?aint?b)
{
int?c;
while((a%b)!=0){
????????c=a%b;
a=b;
b=c;
}
return(b);
}
test(int?aint?b)
{
if(a/Euclid(ab)==1)
return?0;
else
return?1;
}
first_calculation(int?aint?b)
{
int?ci=0temp;
while(test(ab)){
???????????temp=a;
???c=b/a;
???a=b%a;
???b=temp;
???temp=Euclid(ab);
???a=a/temp;
???b=b/temp;
???i++;
}
return?i;
}
void?second_calculation(int?aint?bint?iint?*p)
{
int?jtemp;
for(j=0;j temp=a;
????????*(p+j)=b/a;
????a=b%a;
b=temp;
}
}
void?sub_calculation(int?aint?b[2])
{
int?temp[2]tem;
temp[0]=a*b[1]+b[0];
????temp[1]=b[1];
????tem=Euclid(temp[0]temp[1]);
b[1]=temp[0]/tem;
b[0]=temp[1]/tem;
}
void?third_calculation(int?a[4]int?bint?*c)
{
int?ijm;
int?temp[2];
for(i=b-2;i>=0;i--){
temp[0]=1;
temp[1]=a[i+1];
for(j=i;j>=0;j--)
???????????sub_calculation(a[j]temp);
????????for(m=0;m<2;m++)
*(c+((i+1)*3+m))=temp[m];
*(c+(i+1)*3+2)=0;
}
*c=1;
*(c+1)=a[0];
*(c+2)=0;
}
number_fun(int?a)
{
int?i=0;
while(a/2!=0){
i++;
a=a/2;
}
return?pow(22*i+1);
}
void?filter(int?a[2]int?bint?*cint?d)
{
int?i;
float?tem[3];
for(i=0;i<2;i++)
a[i]=a[i]*2;
int?temp;
for(i=0;i temp=Euclid(*(c+i*3+1)a[1]);
*(c+i*3+2)=(*(c+i*3
- 上一篇:C++統計票數的實現源碼
- 下一篇:遞歸和非遞歸解決迷宮問題
評論
共有 條評論