@til_down

Проект эйлера. Задача №3. Где ошибка?

Я новичок в программировании. Решил для опыта решить задачи с проекта эйлера.
3 задача не решается.
Условие: "Простые делители числа 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;
}
  • Вопрос задан
  • 141 просмотр
Решения вопроса 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. И, после цикла на него смотреть.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы