aのn次方の高速のアルゴリズム、N*N個の桁数はいくらです
1261 ワード
aのn次方程式高速アルゴリズム:nのバイナリ数を用いて計算を行う.nをバイナリで表す場合、各ビットの数は1または0である.プログラムでは,ループごとにまずnの最低ビットが1であるか0であるかを判断し,1であればresult*a演算を行い,0であればa*a演算のみを行い,nの値が0になるまでnを右にシフトしてループを継続する.このアルゴリズムは乗算の回数を減らして、読者の友达は自分で検証することができて、同じく計算の2の10回の方で、アルゴリズムの1累乗の回数は10で、アルゴリズムの2累乗の回数は4+1の個数=6だけです;1010,.複雑度はO(logn)2がベースである.
public class TestPower{
public static void main(String args[]){
System.out.println(f_1(5,35));
}
private static long f(int a,int n)
{
long result=1;
while(n!=0)
{
if((n&1)==1)
{
result=result*a;
}
a=a*a;
n=n>>1;
}
return result;
}
public static long f_1(int a,int n)
{
long start = System.currentTimeMillis();
long result=1;
for(int i=0;i
N*Nのアルゴリズム計算:まずNの各数字のサイクルを計算する.残りの数を計算し、最後に余剰を取ればいいです.import java.util.Scanner;
public class Test_NN
{
public static int pow(int x)
{
int a=x%10; //a x
int y=a;
int pos=1;//pos a
int temp=a*a;
while(a!=temp%10)
{
temp*=a;
pos++;
}
int loot=(x-1)%pos; // 。
for(int i=0;i