循环中的 JS 循环
JS loop inside a loop
我有一个作业要编写一个 js 代码,只使用从用户接收数字并打印出 1 和该数字之间的所有素数的循环。
这就是我所做的,但它没有像我预期的那样工作,找不到我缺少的东西:
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i=2 ; i<=num ; i++){
for (var j=2 ; j<num ; j++){
if (num%j==0){
flag = 1;
break;
}
}
if (flag==0) console.log(i);
if (flag==1) flag=0;
}
您可以尝试这样的操作:
var n = parseInt(prompt('Please enter a number'));
for(var i = 2; i <= n; i++){
var flag = false;
for(var j=2; j<i; j++){
if(i%j == 0){
flag = true;
break
}
}
if(!flag)console.log(i);
}
当您处于嵌套 for 循环中时,您要确定 i
是否为质数,而不是 num
。所以你想在那里使用 i
变量,像这样:
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i=2 ; i<=num ; i++){
for (var j=2 ; j<i ; j++){
if (i%j==0){
flag = 1;
break;
}
}
if (flag==0) console.log(i);
if (flag==1) flag=0;
}
我保留了您的其余代码,就像您拥有的那样,以便您尽可能了解正在发生的事情。
如果您喜欢简短的代码,这里有一个简短的版本:
var num = parseInt(prompt('Please enter a number'));
for(var i = 2, flag = 0; i <= num; i++, flag = 0){
for(var j = 2; j < i; j++) flag = i % j == 0 ? 1 : flag;
if(!flag) console.log(i);
}
I need to output all of the primes in a certain range, not checking
for a specific number if its a prime or not.
你可以试试这个:
function isPrime(num) {
for(var i = 2; i < num; i++)
if(num % i === 0) return false;
return num > 1;
}
var num = parseInt(prompt('Please enter a number'));
for (var i = 2; i <= num; i++) {
if (isPrime(i)) {
console.log(i);
}
}
让我们了解您在代码中做错了什么:
- 在内部循环中,您 运行 直到
num
。为什么?你想要从 2 到 num
的所有数字都是质数,你如何检查数字 i
是否是质数?您尝试将 i
与从 2 到 i-1
的所有数字相除,这就是为什么内部循环应该从 j=2
到 j<i
.
- 在计算
num % j == 0
的内循环中,你只是问num
是否是素数,而你应该问i
是否是素数,因为i
介于 2
和 num
之间,这是您要查找素数的范围。
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i = 2; i <= num; i++) {
for (var j = 2; j < i; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) console.log(i);
if (flag == 1) flag = 0;
}
var flag = false;
var person = prompt("Please enter your name");
console.log(person);
for(var i = 2 ; i < person ; i++){
for(var j = 2 ; j< i ; j++){
if(i % j == 0){
flag = true;
}
}
if(flag == false){
console.log(i , "is prome");
}
flag = false;
}
试试这个代码。我会完美工作
我有一个作业要编写一个 js 代码,只使用从用户接收数字并打印出 1 和该数字之间的所有素数的循环。
这就是我所做的,但它没有像我预期的那样工作,找不到我缺少的东西:
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i=2 ; i<=num ; i++){
for (var j=2 ; j<num ; j++){
if (num%j==0){
flag = 1;
break;
}
}
if (flag==0) console.log(i);
if (flag==1) flag=0;
}
您可以尝试这样的操作:
var n = parseInt(prompt('Please enter a number'));
for(var i = 2; i <= n; i++){
var flag = false;
for(var j=2; j<i; j++){
if(i%j == 0){
flag = true;
break
}
}
if(!flag)console.log(i);
}
当您处于嵌套 for 循环中时,您要确定 i
是否为质数,而不是 num
。所以你想在那里使用 i
变量,像这样:
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i=2 ; i<=num ; i++){
for (var j=2 ; j<i ; j++){
if (i%j==0){
flag = 1;
break;
}
}
if (flag==0) console.log(i);
if (flag==1) flag=0;
}
我保留了您的其余代码,就像您拥有的那样,以便您尽可能了解正在发生的事情。
如果您喜欢简短的代码,这里有一个简短的版本:
var num = parseInt(prompt('Please enter a number'));
for(var i = 2, flag = 0; i <= num; i++, flag = 0){
for(var j = 2; j < i; j++) flag = i % j == 0 ? 1 : flag;
if(!flag) console.log(i);
}
I need to output all of the primes in a certain range, not checking for a specific number if its a prime or not.
你可以试试这个:
function isPrime(num) {
for(var i = 2; i < num; i++)
if(num % i === 0) return false;
return num > 1;
}
var num = parseInt(prompt('Please enter a number'));
for (var i = 2; i <= num; i++) {
if (isPrime(i)) {
console.log(i);
}
}
让我们了解您在代码中做错了什么:
- 在内部循环中,您 运行 直到
num
。为什么?你想要从 2 到num
的所有数字都是质数,你如何检查数字i
是否是质数?您尝试将i
与从 2 到i-1
的所有数字相除,这就是为什么内部循环应该从j=2
到j<i
. - 在计算
num % j == 0
的内循环中,你只是问num
是否是素数,而你应该问i
是否是素数,因为i
介于2
和num
之间,这是您要查找素数的范围。
var num = parseInt(prompt('Please enter a number'));
var flag = 0;
for (var i = 2; i <= num; i++) {
for (var j = 2; j < i; j++) {
if (i % j == 0) {
flag = 1;
break;
}
}
if (flag == 0) console.log(i);
if (flag == 1) flag = 0;
}
var flag = false;
var person = prompt("Please enter your name");
console.log(person);
for(var i = 2 ; i < person ; i++){
for(var j = 2 ; j< i ; j++){
if(i % j == 0){
flag = true;
}
}
if(flag == false){
console.log(i , "is prome");
}
flag = false;
}
试试这个代码。我会完美工作