-7

すみません、e-Courseの宿題で困っています。ユーザーの入力数値が素数かどうかを判断し、その素数を言うか、入力が割り切れる数値を出すプログラムを書くように依頼されました。それを実現するには、どの種類の構文を使用すればよいですか?
例:「6 は 6;3;2;1 で割り切れます」 これまでのコードは次のとおりです。

   #include<iostream>
   #include<conio.h>  
   using namespace std;
   int main()  
   {
   int P,count=0;
   cout<<"Enter a number:\n"; /*Asks for user input*/
   cin>>P;                    /* User input P*/
   for(int a=1;a<=P;a++)
   {
   if(P%a==0)
   {
   count++;
   }
   if(count==2)
         {
        cout<<"Prime number.\n";  /* Provided option when the number is prime number*/
         }
       else
        {
          cout<<" Not prime number \n"; /* This is where I am supposed to provide the               numbers input is divisible with*/
        }
   getch();
   } 
   }
4

1 に答える 1

2

何が問題なのか完全にはわかりませんが、プログラムは次のように出力します

Enter a number:
6
 Not prime number 
Prime number.
 Not prime number 
 Not prime number 
 Not prime number 
 Not prime number

また、<conio.h>標準 C++ ではありません。次のように書くことをお勧めします (std::vector除数を累積するために を使用することに注意してください)。

#include <iostream>
#include <vector>

int main()
{
    int n;
    std::cout << "Enter a number: ";
    std::cin >> n;

    if (n == 0) {
        "Not a prime; 0 is divisible by all integers";
        return 0;
    }

    std::vector<int> divisors;

    for (int i = 1; i <= n; i++) {
        if (n % i == 0) {
            divisors.push_back(i);
        }
    }

    if (divisors.size() > 2) {
        std::cout << "Not a prime; divisors:" << std::endl;
        for (std::vector<int>::iterator it = divisors.begin(); it != divisors.end(); it++) {
            std::cout << *it << std::endl;
        }
    } else {
        std::cout << "Prime" << std::endl;
    }

    return 0;
}
于 2013-02-24T20:14:39.643 に答える