6 Java tapşırığı (Həlli ilə birlikdə)
-
1.3.21 - Kary
Tapşırıq: İki tam ədəd (
i
vək
) qəbul edən bir proqram yazın vəi
ədədinik
əsasında konvert edin.k
2 ilə 16 arasında olmalıdır. Əgər əsas 10-dan böyükdürsə, 11-dən 16-ya qədər olan rəqəmləriA
-F
kimi göstərmək lazımdır.public class Kary { public static void main(String[] args) { long i = Long.parseLong(args[0]); int k = Integer.parseInt(args[1]); String digits = "0123456789ABCDEF"; StringBuilder result = new StringBuilder(); while (i > 0) { int remainder = (int)(i % k); result.insert(0, digits.charAt(remainder)); i /= k; } System.out.println(result.toString()); } }
1.3.28 - Factors dövrünün dayandırılma şərtinin təsiri
Tapşırıq:
(factor < n)
yerinə(factor <= n / factor)
istifadə etdikdə proqramın performansına necə təsir etdiyini yoxlayın. 10 saniyə ərzində tamamlana biləcək ən böyükn
tapın.public class Factors { public static void main(String[] args) { long n = Long.parseLong(args[0]); for (long factor = 2; factor <= n / factor; factor++) { while (n % factor == 0) { System.out.print(factor + " "); n /= factor; } } if (n > 1) System.out.print(n); } }
Qısa təhlil: Yeni şərt (
factor <= n / factor
) daha az iterasiya etməyə səbəb olur və böyükn
üçün daha sürətlidir.
1.3.31 - Relatively Prime (Nisbətən sadə ədədlər cədvəli)
Tapşırıq:
n
daxil edin vən x n
ölçülü cədvəl çap edin. Əgəri
vəj
ədədlərinin ƏBOB-u 1-dirsə, həmin mövqedə*
çap olunsun, əks halda boşluq (public class RelativelyPrime { public static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } public static void main(String[] args) { int n = Integer.parseInt(args[0]); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (gcd(i, j) == 1) System.out.print("* "); else System.out.print(" "); } System.out.println(); } } }
1.3.34 - Ramanujan’ın taksi nömrəsi
Tapşırıq:
a³ + b³ = c³ + d³
bərabərliyini ödəyən fərqli müsbət tam ədədləri (a, b, c, d
) tapın ki,a³ + b³
bir ədəd olsun və bu ədəd eyni zamanda başqa iki ədədin kub cəmi kimi ifadə oluna bilsin.public class Ramanujan { public static void main(String[] args) { int n = Integer.parseInt(args[0]); for (int a = 1; a <= n; a++) { for (int b = a + 1; b <= n; b++) { for (int c = 1; c <= n; c++) { for (int d = c + 1; d <= n; d++) { int sum1 = a*a*a + b*b*b; int sum2 = c*c*c + d*d*d; if (sum1 == sum2 && a != c && a != d && b != c && b != d) { System.out.println(sum1 + " = " + a + "^3 + " + b + "^3 = " + c + "^3 + " + d + "^3"); } } } } } } }
1.3.36 - Sadə ədədlərin sayılması
Tapşırıq:
n
daxil edin vən
-dən kiçik və ya bərabər olan sadə ədədlərin sayını tapın.public class PrimeCounter { public static boolean isPrime(int n) { if (n < 2) return false; for (int i = 2; i*i <= n; i++) { if (n % i == 0) return false; } return true; } public static void main(String[] args) { int n = Integer.parseInt(args[0]); int count = 0; for (int i = 2; i <= n; i++) { if (isPrime(i)) count++; } System.out.println("Sadə ədədlərin sayı: " + count); } }
1.3.37 - 2D Random Walk (Təsadüfi gəzinti)
Tapşırıq:
n
daxil edin. 2n x 2n kvadratın sərhədinə qədər təsadüfi gəzən bir hissəciyin neçə addıma çatacağını təxmin edən proqram yazın.public class RandomWalker { public static void main(String[] args) { int n = Integer.parseInt(args[0]); int x = 0, y = 0; int steps = 0; while (Math.abs(x) < n && Math.abs(y) < n) { double r = Math.random(); if (r < 0.25) x++; // şərq else if (r < 0.5) x--; // qərb else if (r < 0.75) y++; // şimal else y--; // cənub steps++; } System.out.println("Addım sayı: " + steps); } }
Bilik paylaşdıqca artan bir sərvətdir