0

这是任务:

通过给定的 N 数,您需要从中生成 1 到 N 的序列。对于该序列中的每个素数,您需要打印出它之前的所有其他数字(以及数字本身),无论它们是否是素数示例假设 N=10 我们有序列 1、2、3、4, 5, 6, 7, 8, 9, 10 素数是 1, 2, 3, 5, 7 - 5 个素数,所以我们 prive 5 行 每行包含 1 到 PRIME_NUMBER 的所有数字结果:

1
12
123
12345
1234567

让事情变得更简单: 如果数字不是素数,则打印 0 如果数字是素数,则打印 1 最终结果:

1
11
111
11101
1110101

这是我磨损的尝试:

let input = [
    '10',
];
 
let print = this.print || console.log;
let gets = this.gets || ((arr, index) => () => arr[index++])(input, 0);

let N = +gets();
let result;

for (let i = 1; i <= N; i++){
    if(isPrime(i)){
        printRow(i);
    }
}

function printRow(upperLimit){
    let sameLine = '';
    for(let i = 1; i <= upperLimit; i++){
        if(isPrime(i)){
            result = 1; 
        }
        if(!isPrime(i)){
            result = 0;
        }
        sameLine = sameLine + result + '';
    }
    print(sameLine);
}

function isPrime(value) {
    for(var i = 2; i < value; i++) {
        if(value % i === 0) {
            return false;
        }
    }
    return true;
}

我得到:

1
111
111111
11111111101
111111111011110101

但我需要得到:

1
11
111
11101
1110101

在我的情况下,它会不断将已经循环的内容添加到每个新行的新循环中。我需要每个新行不添加上一行的内容。

任何帮助将不胜感激。希望我设法解释了我的问题..这是我在这里的第一个问题,所以不确定我是否可以理解我的贫穷呈现方式。

4

2 回答 2

0

sameLine仅被声明和初始化一次,因此每次调用 printRow 时,它只会添加到先前使用的内容。每次调用 printRow 时,您都需要将其重新初始化为空字符串,因此您只需将其添加let sameLine = ''为内部的第一行即可在printRow每次printRow调用时重新初始化它。

function printRow(upperLimit){
    let sameLine = '';
    for(let i = 1; i <= upperLimit; i++){
        if(isPrime(i)){
            result = 1; 
        }
        if(!isPrime(i)){
            result = 0;
        }
        sameLine = sameLine + result + '';
    }
    print(sameLine);
}
于 2020-09-12T16:59:35.313 回答
0

function isPrime(value) {
    for(var i = 2; i < value; i++) {
        if(value % i === 0) {
            return false;
        }
    }
    return true;
}
function printRow(upperLimit){
    let sameLine=''
    for(let i = 1; i <= upperLimit; i++){
        if(isPrime(i)){
            result = 1; 
        }
        if(!isPrime(i)){
            result = 0;
        }
        sameLine = sameLine + result + '';
        console.log(sameLine);
    }
    
}
printRow(10)

于 2020-09-12T17:08:54.123 回答