我尝试了一种做法,并检查了以下要求。
您正在寻找礼物。所有的礼物都在直线上位于您的路径上 数字,您的房子在0。 给定您当前的职位,找到离您最近的礼物,并计算距离 您当前的位置和礼物之间,并告诉距离。 例如: 对于输入0,输出为2 对于数字= 11,输出应为0 对于数字= 2000000000,输出应为11对于数字= 1800000001,输出 应该是10
对于上述逻辑,我尝试使用javascript并几乎完成了操作,但根据要求我没有得到正确的输出,我的输出返回任何数字。
JavaScript
function isPrime(num) {
if (num <= 1) {
return false;
} else if (num <= 3) {
return true
} else if (num % 2 === 0 || num % 3 === 0) {
return false
}
let i = 5
while (i * i <= num) {
if (num % i === 0 || num % (i + 2) === 0) {
return false
}
i += 6
}
return true
}
HTML
<h1> Gift House</h1>
<label for="name">Enter a house Number</label>
<input type="text" id="inp" class="clr" />
<input type="button" id="checker" value="Calculate" onClick="findpos()">
<label for="name"> Distance of the gift house</label>
<input type="text" id="demo" value="" class="clr">
答案 0 :(得分:0)
我了解您的要求,您已经尝试了2个步骤,但是在这两个步骤之前,您必须再做一次逻辑来计算素数。因为您在JS中调用了函数isPrime
,但是在其中定义了功能?
只需在您的JS代码中包含以下脚本,然后检查输出即可。
function findpos() {
var num = document.getElementById("inp").value;
var pos = 0;
while (true) {
if (isPrime(num)) {
break;
} else {
pos++;
num++;
}
}
document.getElementById("demo").value = pos;
}
答案 1 :(得分:-1)
isPrime
函数在哪里?您未定义函数的调用方式。我认为这是导致问题的原因。
请查看下面的示例
function findpos() {
var num = document.getElementById("inp").value;
var pos = 0;
while (true) {
if (isPrime(num)) {
break;
} else {
pos++;
num++;
}
}
document.getElementById("demo").value = pos;
}
function isPrime(num) {
if (num <= 1) {
return false;
} else if (num <= 3) {
return true
} else if (num % 2 === 0 || num % 3 === 0) {
return false
}
let i = 5
while (i * i <= num) {
if (num % i === 0 || num % (i + 2) === 0) {
return false
}
i += 6
}
return true
}