我从另一篇文章中找到了这段代码,我试图理解这个解决方案的一部分。
function sumPrimes(n) {
function isPrime(num) {
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
var arr = 2;
for ( var i = 3; i <= n; i+=2 ) {
if ( isPrime(i) ) {
arr += i;
}
}
return arr;
}
console.log(sumPrimes(10));
&#13;
我要问的部分是这个特殊的功能
function isPrime(num) {
for ( var i = 2; i < num; i++ ) {
if ( num % i === 0 ) {
return false;
}
}
return true;
}
尤其是这一行
num % i === 0
我能理解的是arr
是一个数组,它在2之后产生每个奇数(例如,[2,3,5,7,9,11,13,15,17])。然后每个号码都通过function isPrime
运行。我想要了解的是num % i === 0
与for ( var i = 2; i < num; i++ )
相关的输出是什么?
输出是这样的吗?
答案 0 :(得分:2)
from facebookads import FacebookAdsApi
from facebookads.adobjects.user import User
my_app_id = 'my_app_id'
my_app_secret = 'my_app_secret'
my_access_token = 'my_access_token'
FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)
me = User(fbid='me')
my_accounts = list(me.get_ad_accounts())
print my_accounts
在此代码中,代码实际执行的是它遍历for ( var i = 2; i < num; i++ ) {
console.log(`${num} % ${i} === ${num % i}`); // Extra line
if ( num % i === 0 ) {
return false;
}
}
和2
之间的每个数字,将其分配给变量num
,并检查{{1} } {}可以被i
整除。如果是,那么它将返回num
。
i
函数(称为模数函数),基本上取两个数字,并在除以第二个数字时返回第一个数字的余数。所以,例如:
false
如果余数为%
,那么显然第一个数字可以被第二个数字整除,因为没有剩下的东西。所以行5 % 2 // = 1, 5/2 = 2 with 1 left over
7 % 3 // = 1, 7/3 = 2 with 1 left over
正在检查可分性,实质上是 - 它正在检查0
是否可以被num % i === 0
整除。
例如,在检查num
(使用额外的i
行)时,这是输出到控制台的内容:
5
这就是console.log
5 % 2 === 1
5 % 3 === 2
5 % 4 === 1
输出的内容:
6
(已停止,因为返回了num
。)
答案 1 :(得分:0)
%
运算符是模数运算符。它返回除法后的余数。因此,只要n可以被x整除,n % x
就会为零。在这个例子中,它正在测试该数字是否可以被任何先前的数字整除。
num % i === 0
只要num
可以整除i
my %repl = (
HOSTGROUP => $row[3],
TOOLNAME => $row[4],
VERSION => $row[5],
);
my $pat = join '|', map quotemeta, keys %repl;
my $re = qr/\$($pat)\b/;
$row[0] =~ s/$re/$repl{$1}/g;
行
答案 2 :(得分:0)
这意味着如果num除以i的其余部分等于0,那么num除以1以外的数字本身,那么它不是一个主要的nubmer,所以返回false。 ('%'表示模数或其余的除法)
答案 3 :(得分:0)
%
是模数运算符。当x%y = x mod y =
除以x
时的余数y
。所以4%1=0
,4%3=1
和4%4=0
。
因此,x%y==0
相当于“x可被y整除”。因此,循环正在检查,对于从2
到num - 1
的每个数字,num
可以被该数字整除。对于素数,答案永远是否定的。因此,num
可以被i
整除的任何情况下,它绝对不是素数。如果num
不能被范围内的任何数字整除,那么它就是素数。
有趣的旁注:循环不必一直到num-1
- 它可能会停在sqrt(num)
(四舍五入),你知道为什么吗?