2012-11-02 3 views
-2

이 작업이 있습니다. 주어진 양의 정수 n (n ≤ 100)이 소수인지 확인하는 식을 작성하십시오. 예 : 37은 소수입니다.숫자가 소수인지 찾기위한 프로그램 #

int number = int.Parse(Console.ReadLine()); 


    for (int i = 1; i < 100; i++) 
    { 
     bool isPrime = (number % number == 0 && number % i == 0); 

     if (isPrime) 
     { 
      Console.WriteLine("Number {0} is not prime", number); 
     } 
     else 
     { 
      Console.WriteLine("Number {0} is prime", number); 
      break; 
     } 

    } 

이것은 작동하지 않습니다. 어떤 제안?

+0

잘못 되었으면 알려주십시오. 또한 단서가 있습니다 - if 문과 writeline이 정확한지 살펴보십시오. –

+2

이 숙제 나 과정은 어떤 종류입니까? –

+0

1. 이것은 나에게 어떤 종류의 숙제 인 것처럼 보이기 때문에 나는 당신에게 답을 쓰고 싶지 않다. 2. 당신이 제공 한 것은 "효과가 없다"는 것입니까? 3. 알고리즘이 잘못 되었다면 (틀렸거나 잘못되었다고 말하는 것이 아닙니다) http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes 또는 http://stackoverflow.com/questions/1510124를 볼 수 있습니다./program-to-find-prime-numbers – Frito

답변

1

a. number % number 무엇을 할 것으로 예상됩니까?

b. isPrime 검사는 매번 루프를 통해 "재설정"됩니다. 더 이런 식으로 뭔가가 필요합니다

bool isprime = true; 
for(int i = 2; i < number; i++) { 
    // if number is divisible by i then 
    // isprime = false; 
    // break 
} 
// display result. 
여기
2
int number = int.Parse(Console.ReadLine()); 

bool prime = true; 
// we only have to count up to and including the square root of a number 
int upper = (int)Math.Sqrt(number); 
for (int i = 2; i <= upper; i++) { 
    if ((number % i) == 0) { 
     prime = false; 
     break; 
    } 
} 
Console.WriteLine("Number {0} is "+ (prime ? "prime" : "not prime"), number); 
-1

은 당신을위한 것입니다 :

void prime_num(long num) 
    { 
     bool isPrime = true; 
     for (int i = 0; i <= num; i++) 
     { 
      for (int j = 2; j <= num; j++) 
      { 
       if (i != j && i % j == 0) 
       { 
        isPrime = false; 
        break; 
       } 
      } 
      if (isPrime) 
      { 
       Console.WriteLine ("Prime:" + i); 
      } 
      isPrime = true; 
     } 
    } 
+0

1과 숫자 사이의 모든 소수를 인쇄합니다. 입력이 소수인지 확인하지 않습니다. 이는 질문이었습니다. – azz

+0

'long'과 비교하여'Int32.MaxValue'에 도달하면'StackOverflowException'을 던집니다. – Guillaume

0

문제점은 다음과 같습니다 숫자가 1 으로 뛰어 될 것이다 2에서 시작해야한다에 대한 number % number == 0 - 항상 참입니다. 모든 단계에 대해 고기를 먹으면 숫자가 소수입니다.

else 
{ 
    Console.WriteLine("Number {0} is prime", number); 
    break; 
} 

거기에 없습니다. 여기 쓴 ...

 int number = int.Parse(Console.ReadLine()); 
     if (number == 1) 
     { Console.WriteLine("Number 1 is prime");return;} 

     for (int i = 2; i < number/2 + 1; i++) 
     { 
      bool isPrime = (number % i == 0); 

      if (isPrime) 
      { 
       Console.WriteLine("Number {0} is not prime", number); 
       return; 
      } 
     } 
     Console.WriteLine("Number {0} is prime", number); 

내가 이것을 테스트하지 않은 것을 알 수하십시오

코드는 다음과 같이해야한다. 그러나 당신은 요점을 알아야한다. LINQ (적어도 작은 범위가 필요)와

0

세미 심각한 가능한 용액 :

var isPrime = !Enumerable.Range(2, number/2).Where(i => number % i == 0).Any(); 
0

프로그램은 주어진 수가 소수인지 아닌지 확인한다.

소수는 단지 1로 나눌 수 있습니다 번호와 자체

class Program 
{ 
    bool CheckIsPrimeNumber(int primeNum) 
    { 
     bool isPrime = false; 

     for (int i = 2; i <= primeNum/2; i++) 
     { 
      if (primeNum % i == 0) 
      { 
       return isPrime; 
      } 
     } 
     return !isPrime; 
    } 
    public static void Main(string[] args) 
    { 
     Program obj = new Program(); 
     Console.Write("Enter the number to check prime : "); 
     int mPrimeNum = int.Parse(Console.ReadLine()); 

     if (obj.CheckIsPrimeNumber(mPrimeNum) == true) 
     { 
      Console.WriteLine("\nThe " + mPrimeNum + " is a Prime Number"); 
     } 
     else 
     { 
      Console.WriteLine("\nThe " + mPrimeNum + " is Not a Prime Number"); 
     } 

     Console.ReadKey(); 
    } 
} 

감사입니다!

관련 문제