Javascript 250以下素数和的求法 var总和=0 对于(i=0;i
我正在检查250以下的所有素数之和。我收到一个错误,说我在原始for语句中创建的语句if(I%factor=0)中无效,但有没有办法在if语句中引用它?Javascript 250以下素数和的求法 var总和=0 对于(i=0;i,javascript,primes,Javascript,Primes,我正在检查250以下的所有素数之和。我收到一个错误,说我在原始for语句中创建的语句if(I%factor=0)中无效,但有没有办法在if语句中引用它?I%factor==0 使用==进行比较=用于分配。是的,我说三重等于。类型强制很烦人。您需要一个=或==:如果(i%因子==0)使用素数计算,您考虑过使用吗?这是一种更优雅的确定素数的方法,求和结果也很简单 var sieve=新数组(); var maxcount=250; var maxsieve=10000; //构建筛子,将所有数字标
I%factor==0
使用
==
进行比较<代码>=用于分配。是的,我说三重等于。类型强制很烦人。您需要一个=
或==
:如果(i%因子==0)
使用素数计算,您考虑过使用吗?这是一种更优雅的确定素数的方法,求和结果也很简单
var sieve=新数组();
var maxcount=250;
var maxsieve=10000;
//构建筛子,将所有数字标记为可能的素数。
对于(变量i=2;i
#结果{
宽度:100%;
高度:180像素
}
您同样可以使用此选项
let sum=0;
设num=250;
for(设i=2;i 控制台日志(总和)代码>所以我不得不面对一个类似的挑战,下面是我的解决方案,希望对您有所帮助:
var sum = 0
for (i = 0; i < 250; i++) {
function checkIfPrime() {
for (factor = 2; factor < i; factor++) {
if (i % factor = 0) {
sum = sum;
}
else {
sum += factor;
}
}
}
}
document.write(sum);
函数sumPrimes(num){
//确定一个数是否为素数
函数isPrime(n){
如果(n==2)返回true;
如果(n==3)返回true;
如果(n%2==0)返回false;
如果(n%3==0)返回false;
var i=5;
var w=2;
虽然(i*i这里有一个相当不错的方法来做。它没有筛子那么先进,但它是一个不错的起点。注意:我使用的是ES6语法
function sumPrimes(num) {
// determine if a number is prime
function isPrime(n) {
if (n === 2) return true;
if (n === 3) return true;
if (n % 2 === 0) return false;
if (n % 3 === 0) return false;
var i = 5;
var w = 2;
while (i * i <= n) {
if (n % i === 0) {
return false;
}
i += w;
w = 6 - w;
}
return true;
}
// subtract 1 for 'not being prime' in my context
var sum = isPrime(num) ? num - 1 : -1;
for (var x = 0; x < num; x++) {
if (isPrime(x) === true) {
sum += x;
}
}
return sum;
}
/*
*对前n个素数求和
*
*@param n(整数)
*@返回整数
*
*/
函数汇总时间(n){
常数arr=[];
设i=2
while(arr.lengthx+y);
/*
*@param n(整数)
*@返回布尔值
*
*/
函数isPrime(n){
if(n<2){
返回错误
}
对于(让i=2;i根据“”,我已经使用JS实现了代码:
函数isPrime(n){
返回((n/2==1 | | n/3==1 | | n/5==1 | | n/7==1)?真:(n%2==0 | | n%3==0 | | n%5==0 | | n%7==0)?假:真);
};
var=250;
让输出=[];
对于(设i=2;i,这里有一个简单的方法,通过数组循环并实现Eratosthenes的筛选
函数sumPrimes(num){
变量t,v=[],
w=[],
x=[],
y=[],
z=0;
//枚举Vee数组从2开始作为第一个素数
对于(假设a=2;a您需要使用双等分:(i%因子==0)你怎么能计算任何东西呢?你只需要创建checkIfPrime
函数250次,而且从不调用它。@dfsq的+1。是的,算法没有意义。JavaScript支持一个相等函数,当给定两个不相等类型的东西时,它会尝试以不明显的方式强制它们。三重相等不进行强制,因此它的定义要简单得多倒立并且可能做人们通常期望的事情。例如(0==“”)在JavaScript中计算为true!非常感谢。如果我想说前250个素数的和,而不是250以下的素数的和,这会对代码产生怎样的影响?我不能删除所有0值并循环,直到array.length为250,因为这会弄乱位置的值。hmmmNic,根据你的新问题,我已经修改了t他用JavaScript显示新答案。但是,如果将maxsieve设置回250,原始答案的本质仍然存在。
/*
* Sum the first n prime numbers
*
* @param n (integer)
* @return integer
*
*/
function sumNprimes(n){
const arr = [];
let i = 2
while (arr.length < n) {
if (isPrime(i)) {
arr.push(i)
}
i++
}
return arr.reduce( (x,y) => x+y );
/*
* @param n (integer)
* @return Boolean
*
*/
function isPrime(n) {
if ( n < 2 ) {
return false
}
for ( let i = 2; i <= Math.sqrt(n); i++ ) {
if ( n % i === 0 ) {
return false;
}
}
return true
}
}