我有這樣的代碼,計數下面的輸入數量質數數量:多線程搜索素數
挑戰的#include<stdio.h>
#include<Math.h>
int is_prime(long num)
{
int k = 1, a = 0, b = 0;
long sr;
switch(num)
{
case 1: return 0;
case 2: return 1;
case 3: return 1;
case 4: return 0;
case 5: return 1;
case 6: return 0;
case 7: return 1;
}
if (num % 2 == 0) return 0;
if (num % 3 == 0) return 0;
sr = (int) sqrt(num);
while (b < sr) {
a = (6 * k) - 1;
b = (6 * k) + 1;
if (num % a == 0)
return 0;
if (num % b == 0)
return 0;
k += 1;
}
return 1;
}
void main()
{
int j;
long num=0;
printf("insert your number to check for prime numbers\n");
scanf("%ld",&num);
for (j = 0; j<num; j++){
if (is_prime(j))
printf("%d is a prime\n", j);
}
}
部分 - 有人問我,如果我可以通過多內核加速我的計算處理,我回答說是的。例如,如果我想檢查100以下的素數,那麼使用第一個線程計算2-50,第二個線程計算51-99。
他說,我得好好考慮一下,因爲在1號核心運行2-50基本的故障,以及51-99對X等於第二個內核100
有誰知道他是否正確?如果是這樣,那麼多核架構的正確方法是什麼?