【问题标题】:Prime numbers not printing in Javascript未在 Javascript 中打印的素​​数
【发布时间】:2013-06-26 21:36:28
【问题描述】:

我有以下代码可以找到从 2 到 1000 的素数:

#!/usr/bin/env node

var primesarray = function(n) {
    var nums = [];
    for (var i = 0; i < n; i++) {
        nums.push("1");
    }

    return nums;
};

var primes = function(arr) {
    var i = 2;
    var primes = [];
    for (i = 2; i < arr.length - 1; i++) {
        if (arr[i] === "1")
            primes.push(i);
        for (j = 2; Math.pow(i, j) < arr.length - 1; j++ ) {
            arr[Math.pow(i,j)] = "0";
        }
    }
    return primes;
};

// Print to console
var fmt = function(arr) {
    return arr.join(",");
};

var k = 1000;
console.log("primes(" + k + ")");
console.log(fmt(primes(k)));

当我运行文件时,它只打印第一行 console.log。我没有看到这里有什么问题。

【问题讨论】:

  • 问题必须表明对正在解决的问题有最低限度的了解。告诉我们您尝试过什么,为什么它不起作用,以及它应该如何工作。在我看来,您“找到了一些代码”,但不明白它为什么起作用。 StackOverflow 不太适合这类问题。
  • 没有调用“primesarray”函数。
  • 你为什么使用 字符串 "1""0" 作为标志?
  • 另外,你不应该计算每个新发现的素数的 power 序列 - 你想要 multiples

标签: javascript primes


【解决方案1】:

函数primes 被编写为期望一个数组,但您传递给它的是一个整数。

你是说fmt(primes(primesarray(k)))吗?

(这至少打印了一个数字列表,但恐怕其中很多都不是素数!)

【讨论】:

  • +1 在我玩 jsfiddle 时也有同样的想法,并注意到它实际上根本不起作用:)
【解决方案2】:

你需要prime你的数组;)

var arr = primesarray(k)

喜欢这个

var k = 1000;
var arr = primesarray(k)
console.log(primes(arr));
console.log(fmt(primes(arr)));

DEMO

一些实际解决方案:http://www.codecademy.com/forum_questions/5033d10f77955e0002004142

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多