Как кодировать многообразные условия в Java?

У меня есть следующий код, который он возвращает мне, если стоимость многообразная или нет.

for (int i = 0; i <= 100; i++) {
    if((i%2)== 0){
        System.out.println(i + " es multiple de 2");
    }
    if((i%3)== 0){
        System.out.println(i + " es multiple de 3");
    }
    if((i%5)== 0){
        System.out.println(i + " es multiple de 5");
    }
    if((i%7)== 0){
        System.out.println(i + " es multiple de 7");
    }
    if((i%11)== 0){
        System.out.println(i + " es multiple de 11");
    }
}

Чтобы печатать на экране, которого нет ни у какого многообразного: Каковым было бы условие?

2
задан 16.11.2016, 16:45
3 ответа

продолжая твой код он был бы:

for (int i = 0; i <= 100; i++) {
    if((i%2)== 0 || (i%3)== 0 || (i%5)== 0 || (i%7)== 0 || (i%11)== 0){
    if((i%2)== 0){
        System.out.println(i + " es multiple de 2");
        }
    if((i%3)== 0){
            System.out.println(i + " es multiple de 3");
        }
    if((i%5)== 0){
            System.out.println(i + " es multiple de 5");
        }
    if((i%7)== 0){
            System.out.println(i + " es multiple de 7");
        }
   if((i%11)== 0){
            System.out.println(i + " es multiple de 11");
        }
}else{
System.out.println(i + " no es multiplo de nadie");
}
}

, но также ты это можешь делать swith

2
ответ дан 24.11.2019, 12:37

Я предпочитаю:

for (int i = 0; i <= 100; i++) {
  boolean multiple = false;
  if ((i%2)== 0){
    System.out.println(i + " es multiple de 2");
    multiple = true;
  }
  if ((i%3)== 0){
    System.out.println(i + " es multiple de 3");
    multiple = true;
  }
  if ((i%5)== 0){
    System.out.println(i + " es multiple de 5");
    multiple = true;
  }
  if ((i%7)== 0){
    System.out.println(i + " es multiple de 7");
    multiple = true;
  }
  if ((i%11)== 0){
    System.out.println(i + " es multiple de 11");
    multiple = true;
  }
  if (!multiple) {
    System.out.println(i + " no es multiplo");
  }
}

Или, гораздо читабельнее

int dividendos[] = new int[]{2, 3, 5, 7, 11} {
for (int i = 0; i <= 100; i++) {
  boolean multiple = false;
  for (int dividendo : dividendos) {
    if ((i%dividendo) == 0){
      System.out.println(i + " es multiple de " + dividendo);
      multiple = true;
    }
  }
  if (!multiple) {
    System.out.println(i + " no es multiplo");
  }
}
6
ответ дан 24.11.2019, 12:37

Все числа делимые по крайней мере из-за 1 и из-за того же самого. Самый крайний случай, - когда число первое, для которого tendrГ-эксперт, который должен делать тест primalidad. В случае чисел между 1 и 100, достаточно подтверждать, делимый ли он из-за 2, 3, 5 или 7, которые являются самыми меньшими или равными кузенами, что квадратный корень 100, но для более общего случая я рекомендую тебе использовать тест primalidad. Ты можешь делать это следующей формой:

bool isPrime(int n) {

    if(n < 2)
         return false;

    if(n == 2)
        return true;

    if(n % 2 == 0)
        return false;

    for(int i=3;i*i<=n;i++)
        if(n % i == 0)
            return false;

    return true;

}
3
ответ дан 24.11.2019, 12:37