Javascript 用JS求素数序列

Javascript 用JS求素数序列,javascript,Javascript,我必须得到一个素数序列。但是我的代码不起作用。怎么可能修复它 var num1 = parseInt(prompt('Enter a number')); var num2 = parseInt(prompt('Enter a number')); var num3 = 0; function primeSeq(num1, num2) { var b = 1; var c = ''; if (num1 > num2) { num3 = num2; num2 = num1; num1 =

我必须得到一个素数序列。但是我的代码不起作用。怎么可能修复它

var num1 = parseInt(prompt('Enter a number'));
var num2 = parseInt(prompt('Enter a number'));
var num3 = 0;
function primeSeq(num1, num2) {  
var b = 1;
var c = '';
if (num1 > num2) {
num3 = num2;
num2 = num1;
num1 = num3;
        }
for (var i = num1; i < num2; i++) {
for (var j = 2; j < i; j++) {
if (i % j == 0) {
b++;
}
if (b <= 1) {
c += i + ' ';               
}
}
}
return c;
}
alert(primeSeq(num1, num2));
var num1=parseInt(提示(“输入一个数字”);
var num2=parseInt(提示(“输入一个数字”);
var num3=0;
函数primeSeq(num1,num2){
var b=1;
var c=“”;
如果(num1>num2){
num3=num2;
num2=num1;
num1=num3;
}
对于(变量i=num1;i如果(b我猜你想要这样的东西

var num1 = parseInt(prompt('Enter a number'));
var num2 = parseInt(prompt('Enter a number'));
var num3 = 0;
if (num1 > num2) {
  num3 = num2;
  num2 = num1;
  num1 = num3;
}
function primeSeq(num1, num2) {  
  var b;
  var c = '';
  for (var i = num1; i < num2; i++) {
    b = 1;
    for (var j = 2; j < i; j++) {
      if (i % j === 0) {
        b++;
      }
    }     
    if (b === 1) {
      c += i + ' ';               
    }
  }
  return c;
}
alert(primeSeq(num1, num2));
var num1=parseInt(提示(“输入一个数字”);
var num2=parseInt(提示(“输入一个数字”);
var num3=0;
如果(num1>num2){
num3=num2;
num2=num1;
num1=num3;
}
函数primeSeq(num1,num2){
var b;
var c=“”;
对于(变量i=num1;i
因此,简而言之,
b
应该在每个新的主候选(
i
循环)上重置为1,并且
b
的检查应该在内部(
j
)循环之外


请注意,还有更多的优化算法。

我想你想要这样的算法

var num1 = parseInt(prompt('Enter a number'));
var num2 = parseInt(prompt('Enter a number'));
var num3 = 0;
if (num1 > num2) {
  num3 = num2;
  num2 = num1;
  num1 = num3;
}
function primeSeq(num1, num2) {  
  var b;
  var c = '';
  for (var i = num1; i < num2; i++) {
    b = 1;
    for (var j = 2; j < i; j++) {
      if (i % j === 0) {
        b++;
      }
    }     
    if (b === 1) {
      c += i + ' ';               
    }
  }
  return c;
}
alert(primeSeq(num1, num2));
var num1=parseInt(提示(“输入一个数字”);
var num2=parseInt(提示(“输入一个数字”);
var num3=0;
如果(num1>num2){
num3=num2;
num2=num1;
num1=num3;
}
函数primeSeq(num1,num2){
var b;
var c=“”;
对于(变量i=num1;i
因此,简而言之,
b
应该在每个新的主候选(
i
循环)上重置为1,并且
b
的检查应该在内部(
j
)循环之外


请注意,还有更多的优化算法。

这里有更优化的算法:

function primeSeq(num1, num2) {
  var primes = [];
  var isPrime;
  var j;
  var results = [];

  for (var i = 2; i < num2; i++) {
    isPrime = true;
    j = 0;
    while (j < primes.length) {
      if (i % primes[j] === 0) {
        isPrime = false;
        break;
      }
      j++;
    }
    if (isPrime) {
      primes.push(i);
      if (i >= num1) {
        results.push(i);
      }
    }
  }
  return results.join(' ');
}

因此,这将使其更加简化。

这里有一个更加优化的算法:

function primeSeq(num1, num2) {
  var primes = [];
  var isPrime;
  var j;
  var results = [];

  for (var i = 2; i < num2; i++) {
    isPrime = true;
    j = 0;
    while (j < primes.length) {
      if (i % primes[j] === 0) {
        isPrime = false;
        break;
      }
      j++;
    }
    if (isPrime) {
      primes.push(i);
      if (i >= num1) {
        results.push(i);
      }
    }
  }
  return results.join(' ');
}
所以这会使它更简单一些。

试试这个

<input ng-model="range" type="number" placeholder="Enter the range">
 <button ng-click="findPrimeNumber(range)">


    $scope.findPrimeNumber=function(range){
         var tempArray=[];
         for(var i=0;i<=range;i++){
            tempArray.push(i)
         }
         var primenumbers= tempArray.filter((number) => {
         for (var i = 2; i <= Math.sqrt($scope.range); i++) {
            if (number % i === 0) return false;
          }
          return true;
         });
         console.log(primenumbers);

     }

$scope.findPrimeNumber=函数(范围){
var tempArray=[];
对于(var i=0;i{
对于(var i=2;i试试这个

<input ng-model="range" type="number" placeholder="Enter the range">
 <button ng-click="findPrimeNumber(range)">


    $scope.findPrimeNumber=function(range){
         var tempArray=[];
         for(var i=0;i<=range;i++){
            tempArray.push(i)
         }
         var primenumbers= tempArray.filter((number) => {
         for (var i = 2; i <= Math.sqrt($scope.range); i++) {
            if (number % i === 0) return false;
          }
          return true;
         });
         console.log(primenumbers);

     }

$scope.findPrimeNumber=函数(范围){
var tempArray=[];
对于(var i=0;i{

对于(var i=2;i来说,更简单的方法是使用筛选系统,如果一个数可被另一个素数整除,则它不是素数。您可以编写如下函数:

function primes(max) {
    let primes = [2];
    for (let i = 3; i <= max; i++) {
        let found = true;
        for (let j = 0; j < primes.length; j++) {
            if (i % primes[j] == 0) found = false;
        }
        if (found) primes.push(i);
    }
    return primes;
}
函数素数(最大值){
设素数=[2];

对于(设i=3;i更简单的方法是使用筛子系统,如果一个数可被另一个素数整除,则它不是素数。您可以编写如下函数:

function primes(max) {
    let primes = [2];
    for (let i = 3; i <= max; i++) {
        let found = true;
        for (let j = 0; j < primes.length; j++) {
            if (i % primes[j] == 0) found = false;
        }
        if (found) primes.push(i);
    }
    return primes;
}
函数素数(最大值){
设素数=[2];

对于(设i=3;对于J的循环,i也可以限制为J