Консольное приложение не запущено и ничего не показывает - PullRequest
0 голосов
/ 26 ноября 2018

Проблема состоит в том, чтобы решить это.

Основными множителями 13195 являются 5, 7, 13 и 29. Каков наибольший простой множитель числа 600851475143?

Я написал этот код

#include <iostream>
#include <math.h>
using namespace std;

bool prime(long int a);

int main()
{
long int b = 600851475143/2;
long int k;



for(long int i = 1; i <= b ; i++)
{
    if(b % i == 0 && prime(i) == true)
        {
            k = i;
        }
}
cout << k << endl;
return 0;



}

bool prime(long int a) 
{
bool p = true; 

for(long int i = 2; i <= sqrt(a) && p == true ; i++) 
     if(a % i == 0) p = false;

return p;
}

и когда я выполняю после сборки, он открывает консоль и ничего не показывает

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Код в порядке.600851475143/2 - это просто большое число, поэтому вам придется подождать несколько минут, пока результат не будет напечатан.Кроме того, вы тестируете вид дважды, если это простое число, которое делает излишне сложность намного выше.Попробуйте это:

long int b = 600851475143/2;
long int k = b;
for(long int i = 2; i < b ; i++)
{
    if(b % i == 0)
    {
        k = i;
        break;
    }
}
cout << k << endl;
0 голосов
/ 26 ноября 2018

Добавить оператор cout внутри цикла for в main.Ваша программа работает, она занимает много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...