我正在寻找一个解决方案,以获得一个数字的最大素数因子,并找到一个有效的脚本,但循环中有一个?(问号)for.我想知道它是?做什么的?
<script type="text/javascript">
n=317584931803;
for(i=2;n>1;n%i?i++:(n/=i,document.write(i+' ')));
</script>
Run Code Online (Sandbox Code Playgroud)
而且,如果您还可以解释这个脚本究竟是做什么的,我会很感激.
它被称为条件运算符.基本上,x ? y : z意味着if x是真,评估和返回y,否则评估和返回z.通过这种方式,它就像一个内联 - if/else陈述.
在这种情况下,我们可以像这样分解您的代码:
n=317584931803;
for(i=2;n>1;n%i?i++:(n/=i,document.write(i+' ')));
Run Code Online (Sandbox Code Playgroud)
相当于:
var n=317584931803;
for (var i=2; n>1; n % i ? i++ : (n /= i, document.write(i + ' '))) {
// do nothing
}
Run Code Online (Sandbox Code Playgroud)
但是这个for循环可以更清楚地写成while循环:
var n=317584931803, i = 2;
while (n > 1) {
n % i ? i++ : (n /= i, document.write(i + ' ');
}
Run Code Online (Sandbox Code Playgroud)
条件运算符可以扩展为:
var n=317584931803, i = 2;
while (n > 1) {
if (n % i > 0) {
i++;
} else {
n = n / i;
document.write( i + ' ');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |