Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста решить задачу по Java

иван фа Ученик (192), на голосовании 11 месяцев назад
Условие:
Напишите класс, который находит натуральное число от 1 до 10000 с максимальной суммой делителей
Голосование за лучший ответ
дмитрий великий Знаток (350) 1 год назад
#include <stdio.h>

int main()
{
int s,smax=0,k,m,imax;

for (int i=2; i<10000; i++)
{
s=0;
k=2;
while (k*k <= i)
{
if (i%k==0)
{
s+=k;
m=i/k;
if (m != k) s+=m;
}
k+=1;
}
if (s > smax)
{
smax=s;
imax=i;
}
}

printf("%d %d",imax,smax);

return 0;
}
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (263998) 1 год назад
 import java.util.stream.IntStream; 

public class Main {

public static void main(String[] args) {
int maxNumber = findNumberWithMaxDivisorSum();
System.out.println("Натуральное число с максимальной суммой делителей: " + maxNumber);
}

public static int findNumberWithMaxDivisorSum() {
int maxNumber = 0, maxSum = 0;

for (int i = 1; i <= 10000; i++) {
int currentSum = getDivisorSum(i);
if (currentSum > maxSum) {
maxSum = currentSum;
maxNumber = i;
}
}

return maxNumber;
}

public static int getDivisorSum(int number) {
return IntStream.rangeClosed(1, (int) Math.sqrt(number))
.filter(i -> number % i == 0)
.flatMap(i -> IntStream.of(i, number / i))
.distinct()
.sum();
}
}
Похожие вопросы