@til_down

Где ошибка в решении?

Условие: "Простые делители числа 13195 - это 5, 7, 13 и 29.
Каков самый большой делитель числа 600851475143, являющийся простым числом?"
Вот код:
#include <iostream>
using namespace std;

long long number = 600851475143;
int del = 0;

int main(int argc, char const *argv[])
{
	for (int i = 2; i < number; i++)
	{
		if (number % i == 0)
		{
			for (int j = 2; j < i; j++)
			{
				if (i % j == 0)	
					break;
				else
					del = i;	
			}	
		}
	}	
	cout << del << endl;
	return 0;
}
  • Вопрос задан
  • 505 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
У вас number в int не помещается. А вы цикл гоните от 2 до number. У вас условие i < number в цикле будет всегда выполнятся - потому что ну не может int i быть больше number.

edit: И вообще логика проверки на простоту у вас сломана. del = i выполнится для любого j, такого что i на него не делится. Т.е. если i=6, то при j=5 вы dеl перезапишите. Вам надо в цикле устанавливать bool flag. И, после цикла на него смотреть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 07:20
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект