编写一个名为INSERT INTO TOP3SUPP( Top3_Year, Top3_Month, Supp_ID, Total_Expense)
SELECT to_char(SYSDATE, 'YYYY'),
to_char(SYSDATE, 'MM'),
SUPPLIER_ID,
total_per_supplier
FROM
(
SELECT SUPPLIER_ID, SUM(TOTAL) AS total_per_supplier
FROM FINANCIAL_EXPENSE
Where SUPPLIER_ID IS NOT NULL
Group by SUPPLIER_ID
Order by total_per_supplier desc
) Where ROWNUM <= 3
的布尔函数,它以整数作为参数,如果参数为素数,则返回true,否则返回true。生成100个随机数,并显示检查每个数字的结果以获得素数。
这应该输出素数的随机数(在真或假检查之后),但我按顺序得到2组数字的结果。
这是我的代码:
isPrime
答案 0 :(得分:5)
您需要检查arr[i]
而不是i
的素数:
for(i = 0; i < 100; i++){
if(isPrime(arr[i])) console.log(arr[i]);
}
答案 1 :(得分:0)
以下代码部分,您正在尝试检查0到100之间的数字
for(i = 0; i < 100; i++){
if(isPrime(i)) console.log(i);
}
但你应该逐个检查arr数组
for(i = 0; i < 100; i++){
if(isPrime(arr[i])) console.log(arr[i]);
}
答案 2 :(得分:0)
使用一个对象存储数字让你避免循环检查重复项并移动检查isPrime()让你跳过第二个循环。 (正如@Andrea指出的那样,你的问题是没有将arr [i]传递给isPrime)
var myRandObj = {};
var randomNumber = 0;
for (var i = 0; i < 100; i++) {
do {
randomNumber = Math.ceil(Math.random() * 100);
} while (typeof myRandObj[randomNumber] !== 'undefined');
myRandObj[randomNumber] = 0;
if (isPrime (randomNumber))
console.log (randomNumber);
}
答案 3 :(得分:-2)
console.log(arr)将整个阵列打印到控制台。删除该行以进一步调试。
var arr = []
for(x = 0; x < 100; x++){
arr[x] = Math.ceil(Math.random()*100)
}
for(i = 0; i < 100; i++){
if(isPrime(arr[i])) console.log(arr[i]);
}
function isPrime(num) {
if(num < 2) return false;
for (var i = 2; i < num; i++) {
if(num%i==0)
return false;
}
return true;
}