یکسری عملیات اضافه داره که میتونید تصحیحش کردم و البته زمانش رو هم میتونید تست کنید. تصحیح ها: هیچ کدوم از تفریق ها لازم نیست چون عملیات عدد صحیحه و همچنین برای d نیازی به باقی مونده گرفتن نداره.
برای اینکه چاپ اسکرین تاثیر نداشته باشه هم کامنت کردم. هر چند اینقدر نباید رو بهینه بودن حساس بود در چند تا جمع و تفریق. با این حال:
public static void main(String[] args) { long ft, et;
int c = 0, d = 0, a = 0, b = 0;
for (int test = 0; test < 10; test++) {
ft = System.nanoTime();
for (int i = 1000; i <= 9999; i++) {
a = i % 10;
b = i % 100 / 10;
c = i % 1000 / 100;
d = i / 1000;
a += d;
b += c;
if (a == b) {
//System.out.println(i);
}
}
et = System.nanoTime();
System.out.println("Execution time (1): " + (et - ft) + " ns");
ft = System.nanoTime();
for (int i = 1000; i <= 9999; i++) {
a = i % 10;
b = (i - a) % 100 / 10;
c = (i - a - b) % 1000 / 100;
d = (i - a - b - c) % 10000 / 1000;
a += d;
b += c;
if (a == b) {
//System.out.println(" عدد: " + i);
}
}
et = System.nanoTime();
System.out.println("Execution time (2): " + (et - ft) + " ns");
}
}