Esempio.Numero intero più divisibile più prossimo
int a = 254;
int b = 25;
int c = (closest integer to `a` that is divisible by `b`)
Come trovare il numero intero c
? Il risultato di tale esempio è c = 250
.
Esempio.Numero intero più divisibile più prossimo
int a = 254;
int b = 25;
int c = (closest integer to `a` that is divisible by `b`)
Come trovare il numero intero c
? Il risultato di tale esempio è c = 250
.
Ci sono due casi da considerare:
Il numero intero più vicino che è inferiore o uguale a a
:
int c1 = a - (a % b);
Il numero intero più vicino che è maggiore di a
:
int c2 = (a + b) - (a % b);
Poi abbiamo bisogno di controllare che è più vicino a a
e restituire che:
int c;
if (a - c1 > c2 - a) {
c = c2;
} else {
c = c1;
}
Così abbiamo potuto creare un metodo closestInteger()
come questo:
static int closestInteger(int a, int b) {
int c1 = a - (a % b);
int c2 = (a + b) - (a % b);
if (a - c1 > c2 - a) {
return c2;
} else {
return c1;
}
}
Esempio:
System.out.println(closestInteger(254, 25));
System.out.println(closestInteger(9, 5));
uscita :
250
10
Il più vicino di seguito: int c = (a/b) * b;
Poiché aeb sono entrambi int. La divisione a/b troncerà al valore più vicino (10). Quindi moltiplicando il risultato per b otterrai quello che stai cercando.
Oppure
più vicino in entrambi i casi:
int c = Math.round ((float) a/b)) * b;
Dato che a viene lanciato come float, la risposta sarà un float e l'arrotondamento va all'int più vicino.
È necessario verificare su entrambi i lati di a
. Quindi impostiamo 'c1' al numero intero più vicino (o uguale a) a
e c2
per essere il numero intero più vicino sopra di esso. Quindi confrontare le differenze. Se c1
è più vicino a a
, impostare c
a c1
, altrimenti c2
.
int c1 = a - (a % b);
int c2 = c1 + b;
int c = a - c1 < c2 - a ? c1 : c2;
Se non ti dispiace andare al successivo numero intero più alto quando c'è un pareggio (per esempio, numero intero più vicino al 6 che è un multiplo di 4 diventa 8 e non 4), quindi è possibile utilizzare questa semplice formula . Non sono necessari confronti
int c = (a + b/2)/b * b; // closest integer to `a` that is divisible by `b`
Tutti i calcoli vengono eseguiti con l'aritmetica dei numeri interi (le frazioni vengono scartate).
molto semplice, ma id piace evitare il numero intero più alto – ThatGuy343
static void checkDivisibility(int i,int j) {
int mod = i % j;
if (mod == 0) {
System.out.println(i+ " is divisible by 13 ");
} else {
if (mod >= 7) {
i = (i + (j - mod));
} else {
i = i - mod;
}
System.out.println(i+" is the nearest divisible ");
}
}
chiamare questo metodo: checkDivisibility (40,13); uscita: 39 è divisibile vicina
numero Armadio meno di un int c1 = a - (% B);
numero armadio maggiore di un int c2 = a + (b - (% B))
Ora confrontare cui si ha meno differenza da un
int d1 = a - c1;
int d2 = c2 - a;
if (d1> d2) // più vicino numero è c2
else // più vicino numero è c1
Easy Peasy, squeezey limone. – Seamus