素数の場合は 1 を返し、合成数の場合は 0 を返す次のプログラムを作成しました。コンポジットを素数として誤って識別する可能性はありますが、次のアルゴリズムの時間の複雑さを改善 (減少) するための提案が必要です。
int compute(int n)
{
int x;
for(int i = 1; i < 100 * sqrt(n); i++)
{
x = rand() % ((int)sqrt(n) + 1);
if(x != 0 && x != 1 && x!=n)
{
if(n % x == 0)
return 0;
}
}
return 1;
}