Member 12606624 Ответов: 1

Как я могу отобразить сумму всех простых чисел вместе с числами, которые делятся на 3 между 1 и 50.


найти сумму простых чисел и чисел, делящихся на 3

Что я уже пробовал:

package Day1.Examples;

public class sumofprime1to50 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		{
	        int sum=0,i,k,j;
	        for(i=2;i<50;i++)
	        {
	            k=0;
	            for(j=2;j<i;j++)>
	            {
	                if(i%j==0||i%3==0)
	                {
	                    k=1;
	                    break;
	                }
	            }
	            if(k==0)
	            {
	                sum=sum+i;
	            }
	        }
	        System.out.println("Sum = "+sum);
	    }
	}
}

0x01AA

К вашему сведению: я удалил свой ответ, потому что он был не в порядке.

Patrice T

В чем твоя проблема ?

1 Ответов

Рейтинг:
4

Patrice T

Я боюсь, что вы получите сумму простых чисел, но не число, делимое на 3.
Итак, прежде всего:
Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Немного математического анализа в порядке:
- 3-единственное число, делимое на 3 и простое. Так что вы можете смело разделять оба квеста.
Подсчет чисел, делящихся на 3, может быть слишком легким.

for(i=2;i<50;i++)
{
    if(i%3==0)
    {
        sum=sum+i;
    }
}

Немного подумав, вы получите
for(i=3;i<50;i+=3)
{
    sum=sum+i;
}

И при более глубоком размышлении вы можете увидеть, что сумма
sum= 3+ 6+ 9+ 12+ 15+ 18 ...

Который
sum= 3* (1+ 2+ 3+ 4+ 5+ 6 ...)

математический ряд (1+ 2+ 3+ 4+ 5+ 6 ...) хорошо известен и может быть вычислен без цикла. (слева в качестве упражнения)


0x01AA

Классный человек заслуживает 5 баллов! На нем, пока я снова читаю свои ответы ;)

Patrice T

Спасибо, лучше поздно, чем никогда. :)