Вопрос
Мне нужно написать программу C, чтобы найти идеальное число ..
main()
{
int n=1000,sum = 0;
for(int num = 1; num <= n; num++)
{
sum = 0;
for(int i = 1; i < num; i++)
{
if(!(num%i))
{
sum+=i;
}
}
if(sum == num)
printf("\n%d",num);
}
}
if(!(num%i))
- Это D -линия, которую я не понимаю.
Если есть какой -либо другой простой метод, пожалуйста, предложите мне
Решение
if(!(num%i))
просто означает if( (num%i) == 0 )
Другие советы
Если вы ищете более эффективный способ найти идеальные цифры, вы можете прочитать Страница Википедии на идеальных числах. Анкет В нем вы обнаружите, что нет известных нечетных идеальных чисел (и используя свой метод, который вы не найдете), и что все даже идеальные цифры имеют форму:
2^(p - 1)*(2^p - 1)
куда 2^p - 1
является ярким и, следовательно, p
это главное. Таким образом, если вы хотите найти даже идеальные числа, проверьте первичность 2^p - 1
для всех простых чисел p
, если так 2^(p - 1)*(2^p - 1)
идеально.
Если вы просто хотите найти несколько небольших идеальных чисел, используя простой цикл, вы можете сделать свой подход более эффективным, отметив, что если i
Разделение num
, тоже num / i
. Анкет То есть вам нужно только зацикливаться на квадратном корне num
и добавить пары i
а также num / i
к sum
. Анкет Обратите внимание, что если num
квадратный, квадратный корень num
должен быть добавлен только один раз.
Обратите внимание, что если вы рассчитываете sum
Таким образом, это будет 2 * num
Для идеальных чисел, а не num
.
num % i
означает "num модуло I "; он возвращает напоминание о разделении чисел (следовательно, число между 0
а также i-1
).
В C, 0 ложное, и все остальные числа верны, поэтому !(num % i)
Тесты, если «num modulo i» равна нулю или в простой математике, если num равномерно делится на i.
Очень простым способом if(!(num%i))
Код проверяет, что если значение num делится на i и возвращает, если оставшееся 0 или нет ... следовательно, оператор модуля используется здесь, чтобы найти остаток. Этот кусок кода похож на if(num % i==0)
Анкет Если он возвращает true, то значение, которое я должен быть добавлен с суммой. Наконец, если значение суммы равно значению NUM, число идеально подходит, а число отображается!