当前位置: 首页 > 知识库问答 >
问题:

如何尽可能多地将一个数字除以2,然后用Javascript打印出来?

司马作人
2023-03-14

我想写一个程序,读取一个整数,然后尽可能多地将它除以2,同时将这个数写成两个数乘以一个不再能被2整除的数的乘积。

例如:

我想要一个整数: 120

120 = 2 * 2 * 2 * 15

这就是我所能做到的(在我看来,其中的一部分已经很好了,但不幸的是,我被困在这里):

let num = Number(prompt('The number: '));

let i = 0;
while(!(num % 2)) { 
    num /= 2; 
    i++; 
}

let solution = Array(i).fill(2).join(' * ');

console.log(solution);

共有1个答案

唐声
2023-03-14

为了达到你想要的结果,我会采取以下几个步骤:

  • 如果要在输出中显示原始值,请保留原始值(请参见常量initialNum和可编辑的余数
// Keep a copy of the original
const initialNum = Number(prompt('The number: '));
let remainder = initialNum

// This is working fine and doesn't need any changes
let i = 0;
while (!(remainder % 2)) {
  remainder /= 2;
  i++;
}

// Add the required "2"s
const values = Array(i).fill(2)
// If the total isn't completely divisible by 2, add the final mutlipier
if (remainder !== 1) {
  values.push(remainder)
}
// Build the output string
const solution = `${initialNum} = ${values.join(' * ')}`;

console.log(solution);
 类似资料:
  • 我在打印格式上有一个小问题。如果数字不是整数,我想打印小数点后的2位数字(例如55.53467- 我拥有的代码是: 当然,它总是打印两位数。非常感谢

  • 我一直在关注上面提到的问题和这个问题:JavaScript数组到CSV 试图在A和B列中打印两个数组,我可以将它们转换成一个由COMAS“”分隔的字符串,这更容易做到,但我只是不能让它与可用的示例一起工作。 谢谢

  • 问题内容: 我正在使用getifaddrs()和inet_ntop()来获取系统上的ip地址。当系统设置为IPv6时,返回的地址为简化版本(使用::表示零)。有什么办法可以将该地址扩展为完整地址吗? 这是我正在使用的代码: 代码非常感谢。 编辑: 由于这显然很难理解,我举一个例子: 如果我得到abcd:12 :: 3,我需要将其扩展为abcd:0012:0000:0000:0000:0000:00

  • 我正在处理多个敏感值的Java应用程序。我们正在使用Lombok,并且有很多数据类,如下所示。然而,在日志中看到这些类时却没有指示它们包含一些关键字段,这令人困惑,因为生成的toString将100%忽略被排除的字段。有没有可能让Lombok打印类似

  • 我现在的代码: 我希望它打印两个数组的交集,而不需要再次打印相同的数字。 E、 g:code>[1,2,2,1]和的交点应该只打印一次,而不是像我现在的代码那样。

  • 是否有一种方法可以只使用一条打印语句,但仍能达到与下面代码中相同的效果?我尝试了在这种情况下无法使用的结束语句,或者我使用了错误的结束语句: