Enam bilangan ganjil berurutan a, a+2, a+4, a+6, a+8, a+10 semuanya merupakan bilangan komposit. Tentukan penyelesaian brute force untuk a terkecil.
Posting dulu hasilnya, lalu paste kodenya:
1 n=9 berturut-turut, jumlah nilai berturut-turut: 1; memakan waktu: 0 md, total: 0 md 2 kali berturut-turut n=25, jumlah nilai berturut-turut: 1; memakan waktu: 0 md, total: 0 md 3 kali berturut-turut n=91, Jumlah nilai berturut-turut: 1; Memakan waktu: 0 md, Total: 0 md 4 kali berturut-turut n=115, Jumlah nilai berturut-turut: 3; Memakan waktu: 0 md, Total: 1 md 5 berturut-turut n=115, jumlah nilai berturut-turut: 3; konsumsi waktu: 0 md, total: 1 md 6 kali berturut-turut n=115, jumlah nilai berturut-turut: 3; konsumsi waktu: 0 md, total: 1 md 7 berturut-turut n=525, terus menerus Jumlah nilai: 2; Memakan waktu: 0 md, Total: 1 md 8 kali berturut-turut n=525, Jumlah nilai berturut-turut: 2; Memakan waktu: 0 md, Total: 1 md 9 kali berturut-turut n=889, jumlah nilai berturut-turut: 1; memakan waktu: 0 md, total: 1 md 10 kali berturut-turut n=1131, jumlah nilai berturut-turut: 1; memakan waktu: 0 md, total: 1 md 11 kali berturut-turut n= 1329, terus menerus Jumlah nilai: 6; Memakan waktu: 0 md, Total: 1 md 12 kali berturut-turut n=1329, Jumlah nilai berturut-turut: 6; Memakan waktu: 0 md, Total: 1 md 13 kali berturut-turut n=1329, jumlah nilai berturut-turut: 6; konsumsi waktu: 0 md, total: 1 md 14 kali berturut-turut n=1329, jumlah nilai berturut-turut: 6; 1329, berturut-turut Jumlah nilai: 6; Memakan waktu: 0 ms, Total: 1 ms16 kali berturut-turut n=1329, Jumlah nilai berturut-turut: 6; 0 md, total: 1 md, 17 kali berturut-turut n=9553, jumlah nilai berturut-turut: 1; memakan waktu: 2 md, total: 3 md, 18 kali berturut-turut n=15685, jumlah nilai berturut-turut: 4; 5 md, 19 kali berturut-turut n =15685, jumlah nilai berturut-turut: 4; konsumsi waktu: 1 md, total: 5 md20 kali berturut-turut n=15685, jumlah nilai berturut-turut: 4; Memakan waktu: 1 md, total: 5 md, 21 kali berturut-turut n=15685, jumlah nilai berturut-turut: 4; Memakan waktu: 1 md, total: 5 md, 22 kali berturut-turut n=19611, jumlah nilai berturut-turut: 4; : 2 md, total : 8 md23 kali berturut-turut n=19611, jumlah nilai berturut-turut: 4; 8ms24 kali berturut-turut n=19611, jumlah nilai berturut-turut: 4; konsumsi waktu: 2ms, total: 8ms25 kali berturut-turut n=19611, jumlah nilai berturut-turut: 4; Jumlah nilai berturut-turut: 10; memakan waktu: 5 md, total: 13 md, 27 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; Memakan waktu: 5 md, total: 13 md, 28 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; Memakan waktu: 5 md, total: 13 md, 29 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; : 5 md, total : 13 md30 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; memakan waktu: 5 md, total: 13ms31 kali berturut-turut n=31399, jumlah nilai berurutan: 10; konsumsi waktu: 5ms, total: 13ms32 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; konsumsi waktu: 5ms, jumlah total: 13ms33 kali berturut-turut n=31399, Jumlah nilai berturut-turut: 10; konsumsi waktu: 5 ms, total: 13ms34 kali berturut-turut n=31399, jumlah nilai berturut-turut: 10; memakan waktu: 5ms, total: 13ms35 kali berturut-turut n=155923, berturut-turut Jumlah nilai: 7; Waktu yang dibutuhkan: 92 ms, Total: 105ms37 kali berturut-turut n=155923, jumlah nilai berturut-turut: 7; memakan waktu: 92ms, total: 105ms38 kali berturut-turut n=155923, jumlah nilai berturut-turut: 7; Jumlah nilai: 7; Waktu yang dibutuhkan: 92 ms, Total: 105ms40 kali berturut-turut n=155923, jumlah nilai berturut-turut: 7; memakan waktu: 92ms, total: 105ms41 kali berturut-turut n=155923, jumlah nilai berturut-turut: 7; Jumlah nilai: 7; waktu yang dibutuhkan: 93ms, total: 106ms43 kali berturut-turut n=360655, jumlah nilai berturut-turut: 5; konsumsi waktu: 243ms, total: 349ms44 kali berturut-turut n=360655, jumlah nilai berturut-turut: 5; terus menerus Jumlah nilai: 5; konsumsi waktu: 243ms, total: 349ms46 kali berturut-turut n=360655, jumlah nilai berturut-turut: 5; konsumsi waktu: 243ms, total: 349ms47 kali berturut-turut n=360655, jumlah nilai berturut-turut: 5; terus menerus Jumlah nilai: 8; Waktu yang dibutuhkan: 14ms, Total: 363ms49 kali berturut-turut n=370263, jumlah nilai berturut-turut: 8; memakan waktu: 14ms, total: 363ms50 kali berturut-turut n=370263, jumlah nilai berturut-turut: 8; Jumlah nilai: 8; Waktu yang dibutuhkan: 14 ms, Total: 363ms52 kali berturut-turut n=370263, jumlah nilai berturut-turut: 8; memakan waktu: 14ms, total: 363ms53 kali berturut-turut n=370263, jumlah nilai berturut-turut: 8; Jumlah nilai: 8; Waktu yang dibutuhkan: 14 ms, Total: 363ms55 kali berturut-turut n=370263, jumlah nilai berturut-turut: 8; memakan waktu: 14ms, total: 363ms56 kali berturut-turut n=492115, jumlah nilai berurutan: 1; Jumlah nilai: 2; memakan waktu: 1854ms, total: 2402ms58 kali berturut-turut n=1349535, jumlah nilai berturut-turut: 2; konsumsi waktu: 1854ms, total: 2402ms59 kali berturut-turut n=1357203, jumlah nilai berturut-turut: 7; konsumsi waktu: 22ms, jumlah total: 2424ms60 kali berturut-turut n=1357203, Jumlah nilai berturut-turut: 7; konsumsi waktu: 22 ms, total: 2424ms61 kali berturut-turut n=1357203, jumlah nilai berturut-turut: 7; konsumsi waktu: 22ms, total: 2424ms62 kali berturut-turut n=1357203, jumlah nilai berturut-turut: 7; konsumsi waktu: 22ms, jumlah total: 2424ms63 kali berturut-turut n=1357203, Jumlah nilai berturut-turut: 7; konsumsi waktu: 22 ms, total: 2424ms64 kali berturut-turut n=1357203, jumlah nilai berturut-turut: 7; konsumsi waktu: 22ms, total: 2424ms65 kali berturut-turut n=1357203, jumlah nilai berturut-turut: 7; konsumsi waktu: 22ms, jumlah total: 2424ms66 kali berturut-turut n=2010735, terus menerus Jumlah nilai: 8; Waktu yang dibutuhkan: 1889ms, Total: 4313ms67 kali berturut-turut n=2010735, jumlah nilai berturut-turut: 8; konsumsi waktu: 1889ms, total: 4313ms68 kali berturut-turut n=2010735, jumlah nilai berturut-turut: 8; konsumsi waktu: 1889ms, jumlah total: 4313ms69 kali berturut-turut n=2010735, Jumlah nilai berturut-turut: 8; Waktu yang dibutuhkan: 1889ms, Total: 4313ms70 kali berturut-turut n=2010735, jumlah nilai berturut-turut: 8; memakan waktu: 1889ms, total: 4313ms71 kali berturut-turut n=2010735, jumlah nilai berturut-turut: 8; memakan waktu: 1889ms, total: 4313ms72 kali berturut-turut n=2010735, berturut-turut Jumlah nilai: 8; Waktu yang dibutuhkan: 1889ms, Total: 4313ms73 kali berturut-turut n=2010735, jumlah nilai berturut-turut: 8; konsumsi waktu: 1890ms, total: 4314ms74 kali berturut-turut n=4652355, jumlah nilai berturut-turut: 3; konsumsi waktu: 10583ms, jumlah total: 14897ms75 kali berturut-turut n=4652355, Jumlah nilai berturut-turut: 3; Waktu yang dibutuhkan: 10583ms, total: 14897ms76 kali berturut-turut n=4652355, jumlah nilai berturut-turut: 3; konsumsi waktu: 10583ms, total: 14897ms77 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; 100979ms78 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; memakan waktu: 86082ms, total: 100979ms79 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; memakan waktu: 86082ms, total: 100979ms80 kali berturut-turut n=17051709, berturut-turut Jumlah nilai: 13; Memakan waktu: 86082 md, total: 100979 md81 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; Memakan waktu: 86082 md, total: 100979 md82 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; Memakan waktu: 86082 md, total : 100979ms83 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; memakan waktu: 86082ms, total: 100979ms84 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; memakan waktu: 86082ms, total: 100979ms85 kali berturut-turut n=17051709, berturut-turut Jumlah nilai: 13; Memakan waktu: 86083 md, total: 100980 md 86 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; Memakan waktu: 86083 md, total: 100980 md 87 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; , jumlah : 100980ms88 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; konsumsi waktu: 86083ms, total: 100980ms89 kali berturut-turut n=17051709, jumlah nilai berturut-turut: 13; konsumsi waktu: 86083ms, jumlah total: 100980ms90 kali berturut-turut n=20831325, Jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total: 135752 md91 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total: 135752 md92 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total : 135752ms93 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; konsumsi waktu: 34772ms, total: 135752ms94 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; konsumsi waktu: 34772ms, jumlah total: 135752ms95 kali berturut-turut n=20831325, Jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total: 135752 md96 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total: 135752 md97 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; Memakan waktu: 34772 md, total : 135752ms98 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; konsumsi waktu: 34772ms, total: 135752ms99 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; konsumsi waktu: 34773ms, jumlah total: 135753ms100 kali berturut-turut n=20831325, Jumlah nilai berturut-turut: 15; Memakan waktu: 34773 md, total: 135753 md101 kali berturut-turut n=20831325, jumlah nilai berurutan: 15; Memakan waktu: 34773 md, total: 135753 md102 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; Memakan waktu: 34773 md, total : 135753ms103 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; konsumsi waktu: 34773ms, total: 135753ms104 kali berturut-turut n=20831325, jumlah nilai berturut-turut: 15; 135753ms105 kali berturut-turut n=47326695, jumlah nilai berturut-turut: 5; konsumsi waktu: 319130ms, total: 452155ms106 kali berturut-turut n=47326695, jumlah nilai berturut-turut: 5; 452156ms107 kali berturut-turut n=47326695, jumlah nilai berturut-turut: 5; memakan waktu: 319131ms, total: 452156ms108 kali berturut-turut n=47326695, jumlah nilai berturut-turut: 5; 452156ms109 kali berturut-turut n=47326695, jumlah nilai berturut-turut: 5; memakan waktu: 319131ms, total: 452156ms110 kali berturut-turut n=122164749, jumlah nilai berturut-turut: 1; 1847356ms111 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; memakan waktu: 1705936ms, total: 3553292ms112 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; 3553292ms113 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; memakan waktu: 1705936ms, total: 3553292ms114 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; 3553292ms115 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; memakan waktu: 1705936ms, total: 3553292ms116 kali berturut-turut n=189695661, jumlah nilai berturut-turut: 6; 3553292ms117 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; memakan waktu: 61964ms, total: 3615256ms118 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; 3615256ms119 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; konsumsi waktu: 61964ms, total: 3615256ms120 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; 3615256ms121 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; memakan waktu: 61964ms, total: 3615256ms122 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; 3615256ms123 kali berturut-turut n=191912785, jumlah nilai berturut-turut: 7; konsumsi waktu: 61964ms, total: 3615256ms124 kali berturut-turut n=387096135, jumlah nilai berturut-turut: 1; konsumsi waktu: 6650201ms, jumlah total: 10265457ms----- Proses ini telah selesai, dan nilai berikutnya telah melebihi 1000 kali; waktu tidak berguna: 0 md, total: xxxxxx135395 md
. . . . . . Hasil selanjutnya belum dihitung.
Kodenya terlihat seperti ini:
paket com.test.test.zhihe;impor java.util.ArrayList;impor java.util.HashMap;impor java.util.Iterator;impor java.util.List;impor java.util.Map;impor java.util.Set ;/** * Enam bilangan ganjil berurutan a, a+2, a+4, a+6, a+8, a+10 semuanya bilangan komposit, carilah a */kelas publik terkecil ZhishuTest { /** * Menentukan apakah suatu bilangan merupakan bilangan komposit. Dibandingkan dengan bilangan prima* @param num * @return */ public static boolean He(int num){ // Akar kuadrat int persegi = ((Ganda)Math. persegi (angka)).intValue(); // 2 ... persegi untuk (int i = 2; saya <= persegi; i++) { int mo = angka % i; if(0 == mo){ kembalikan benar; } } // kembalikan salah; } /** * Fungsi utama* @param args */ public static void main(String[] args) { test(); test() { // Waktu mulai lama startMillis = System.currentTimeMillis(); // Waktu penyelesaian terakhir lama preMillis = System.currentTimeMillis(); // Waktu penyelesaian terakhir lama curMillis = System.currentTimeMillis(); // int lianxu = 1000; int start = 1; int kali = 1; untuk (int x = 1; x <= lianxu; x++) { if(times > x){ lanjutkan; lolos, masuk ke loop berikutnya} else { times = x; } Daftar<Map<Integer, Integer>> resList = testTimesHe(x, start, false); Jika ada nomor, proseslah if(null == resList || resList.isEmpty()){ // Jika tidak dapat ditemukan, tidak akan ada nomor berikutnya... // Penyusunan dalam terlalu menjijikkan. . . break; } int size = resList.size(); // Melintasi Iterator<Map<Integer, Integer>> iteratorR = resList.iterator(); Peta<Bilangan Bulat, Bilangan Bulat>) iteratorR.next(); // if(null != peta && !map.isEmpty()){ // Penjelajahan peta sangat menjijikkan. Java Set<Integer> key= map.keySet(); Iterator<Integer> iteratorK = key.iterator(); if(iteratorK.hasNext()){ Integer key = iteratorK.next( ); // Berapa kali Nilai integer = map.get(key); // Minimum n // // Waktu penyelesaian ini curMillis = System.currentTimeMillis(); // long allTimeout = curMillis - startMillis; long curTimeout = curMillis - preMillis; System.out.println(""+key+" kali berturut-turut n="+value +", jumlah nilai berturut-turut: "+size + "; memakan waktu: " + curTimeout + " ms, total: "+allTimeout+"ms"); // Memproses data, yang diproses dengan rakus tidak akan diproses if(key > 0 && value > 0){ times = key+1; start = value; } } } } // Sertakan waktu penyelesaian terakhir preMillis = System.currentTimeMillis(); } // // Waktu penyelesaian ini curMillis = System.currentTimeMillis(); // long allTimeout = curMillis - startMillis; out.println("Perjalanan ini telah selesai, nilai berikutnya telah melebihi 100 kali" + "; Waktu tidak berguna: " + curTimeout + "ms, total: "+allTimeout+"ms"); } /** * * Waktu pengujian + 2 adalah n minimum bilangan komposit * @param kali perhitungan waktu * @param nomor awal mulai * @param onlyStart hanya menghitung satu nilai awal. Digunakan untuk rekursi. Panggilan eksternal harus diteruskan dalam * @return */ public static List<Map<Integer, Integer>> testTimesHe(int times,int start, boolean onlyStart) { // Daftar<Map<Integer, Integer>> resList= new ArrayList<Map<Integer, Integer>>(); // // Pemrograman defensif if(start < 1){ return resList; { // Jangan menangani bilangan genap return resList } if(times < 1){ times = 1; // int result = -1; Integer.MAX_VALUE; i+=2) { // // Hindari penghitungan terus-menerus tanpa mengembalikan if(onlyStart && i > start){ // Jika start tidak terpenuhi, langsung kembalikan resList } for (int j = 0; j < kali; j++) { int n = i + 2*j; // if(!He(n)){ break; // Jalan keluar dalam} // if(j+1 == kali){ // Jalankan ke hasil .kali Ini memenuhi result = i; break;// Tidak masalah apakah Anda mundur atau tidak, kita jalankan sampai akhir for} } // if(result > 0){ // //System.out.println(" hasil = "+hasil ); // Peta<Bilangan Bulat, Bilangan Bulat> resMap = HashMap baru<Bilangan Bulat, Bilangan Bulat>(); resMap.put(waktu, hasil); resList.add(resMap); // Coba beberapa kali lagi, rekursi; Faktanya, rekursi ini dapat lebih dioptimalkan dengan algoritma serakah, tambahkan saja di lain waktu. . . // startTimes, tambahkan parameter ini secara langsung. . . Rekursi serakah? // Sekali lagi, mulai dari angka result int t = times +1; int s = result; List<Map<Integer, Integer>> nextList = testTimesHe(t, s, true); adalah Angka-angka pada level berikutnya ditambahkan ke hasil saat ini if(null != nextList && false==nextList.isEmpty()){ resList.addAll(nextList); break; // Keluar dari lapisan luar } } // kembalikan resList }}
Catatan: Masih ada ruang untuk perbaikan, silakan melakukan koreksi di lain waktu