Как я могу преобразовать интервал 90 минут в DateTime 1:30?

Две основные проблемы с вашим кодом:

  1. После обозначения числа не простым, вы продолжаете проверять остальные делители, даже если вы уже знаете, что оно не простое, что может привести к нему печать "премьер" после печати "не премьер". Подсказка: используйте оператор `break '.
  2. Вы назначаете простое число до того, как проверили все делители, которые нужно проверить, потому что вы печатаете «простое» внутри цикла. Таким образом, вы получаете «простое число» несколько раз, по одному разу для каждого делителя, который неравномерно входит в число тестируемых. Подсказка: используйте предложение else с циклом для печати «простого», только если цикл завершается без прерывания.

Пара довольно существенных недостатков:

  1. Вы должны отслеживать числа, которые вы уже нашли, которые являются простыми и делятся только на них. Зачем делить на 4, если вы уже поделили на 2? Если число делится на 4, оно также делится на 2, так что вы бы его уже поймали, и нет необходимости делить на 4.
  2. Вам нужно только проверить до квадратного корня из тестируемого числа, потому что любой фактор, больший, чем этот, должен быть умножен на число меньше этого, и это уже было бы проверено к тому времени, когда вы доберетесь до больше.
16
задан H.B. 3 September 2012 в 14:13
поделиться

2 ответа

Вы не должны использовать DateTime для представления промежутка времени - используйте для этого TimeSpan. И в таком случае вы бы использовали это:

TimeSpan ts = TimeSpan.FromMinutes(90);

Если вы настаиваете на том, что вам нужен DateTime, вы можете сделать следующее:

DateTime dt = DateTime.Now.Date; // To get Midnight Today
dt = dt.AddMinutes(90); // to get 90-minutes past midnight Today.

Причина, по которой вы, вероятно, не хотите использовать DateTime, заключается в том, что он (удачно названный) объединяет концепцию даты с концепцией времени. Ваш вопрос предполагает, что вы планируете игнорировать компонент даты, поэтому в интересах использования правильного инструмента для работы я предлагаю TimeSpan.

39
ответ дан 30 November 2019 в 16:14
поделиться

Или, если вы пытаетесь добавить время к DateTime только с датой:

DateTime dt = dateTime.AddMinutes(90);
1
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: