我需要测试
的事实如果以整数= 1开头,并将其加倍,则记录N(到基数2) 时间,你得到N
我以为我会为此写一些java代码..但是,这就是我得到的
public class Log2NDoubling {
public static void main(String[] args) {
int s = 1;
int N = 10;
double lg2N = log2(N);
int intlg2N = (int)lg2N;
for(int i=0;i< intlg2N;i++){
s *= 2;
}
System.out.println("s="+s);
}
private static double log2(int x){
return Math.log10(x)/Math.log10(2);
}
}
产生了输出
S = 8.0
嗯,这并不完全证明上述陈述......错误选择输入数据的罪魁祸首还是我的代码?
答案 0 :(得分:4)
你需要为N:4,8,16,32,64,128等选择一个2的幂,或者你需要在这里进行分数加倍:
int intlg2N = (int)lg2N;
for(int i=0;i< intlg2N;i++){
让我们来解决这个问题。 log2(10)是3.3219。但是你要四舍五入到。
所以你得到2 * 2 * 2.