3
숫자가 소수 일 경우 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;
}
그래서 다른 알고리즘을 원하십니까? – FKaria
적절한 프라임 테스트를 사용하지 않는 이유는 무엇입니까? –
또한 sqrt (n)에서 모든 제수 후보를 확인하고 무작위 화가 필요하지 않습니다. –