2014-02-20 4 views
-3

루프를 사용하지 않고 숫자가 소수인지 확인하려고합니다. 아래는 제가 지금까지 가지고있는 것입니다. 내 싸움은 가능한 모든 입력 값을 다룰 수 있는지 여부를 모른다는 것입니다.루프없이 프라임 번호 받기

bool isPrime(int Value) 
{ 
    if ((Value % 2 == 0) || (Value % 3 == 0) || (Value % 5 == 0) || (Value % 7 == 0)) 
     return false; 
    else 
     return true; 
} 
+0

이 작동하지 않습니다 for 11 –

+0

당신은 [prime sieve] (http://en.wikipedia.org/wiki/Generating_primes)를 생성하려고 시도 할 수 있습니다. 그러나 그 자체로 체를 생성하면 루프가 아닌 요구 사항을 위반하게됩니다. – LB2

+5

은 11에 대해 작동합니다. 11로 나눌 숫자가 없기 때문에 true를 반환합니다. –

답변

1

분명히 소수의 전체 범위를 다루지는 않습니다. 현재 귀하의 입력이 4 개의 소수로 나뉘어져 있는지 확인하고 있습니다. 귀하의 전화 번호가 소수인지 확인하려면 다른 소수뿐만 아니라 (13, 17, 23 등)로 나눌 수 없어야합니다. 루프의 훨씬 더 나쁜 대안은 재귀이지만, 나는 왜 당신이 후자와 함께 가야하는지 알지 못한다. 당신이 가능한 입력 뭔가의 범위를 정의 할 수있는 경우

You can use this method

+1

Erm, 이러한 예제는 루프를 사용하며 질문자가 루프없이이를 수행하는 방법을 묻습니다. – Sean

+0

맞습니다. 그러나 if 문에서 각 소수를 하드 코딩하거나 재귀를 사용하지 않는 한 그런 일은 불가능합니다. –

+0

@NikolayPetkov 유감스럽게 생각하지만 유클리드는 불가능하다는 것을 증명했습니다. 너 2000 년 전에도 마찬가지야. 메모 가져 오지 않았 니? – Aron

1

이 제로가 아닌 정수가 100 이하로,이 같은 가장 간단한 해결책이 될 수있는 말을

int[] primes = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 } ; 

bool isPrime(int Value) 
{ 
    return primes.Contains(Value); 
} 
+1

당신은'HashSet'에 넣어야합니다 ... 알다시피 ... 그냥 ... – Aron

+0

@Aron : 사실입니다. 아마 100보다 큰 차이는 없겠지만 세트가 커질수록 아마도 더 나을 것입니다. –

+0

나는 이것이 루프를 사용한다고 감히 생각한다.포함)') – spender