mistral 22b:
Tabii ki, iki otomobil çarpışma olayını, klasik fizik denklemlerini kullanarak özetleyebilirim.
iki otomobil arasındaki çarpışma, bir fiziksel olaydır ve Newton'un ikinci hareket yasasına dayanmaktadır. Bu yasa, bir cismin hareketini değiştiren kuvvetin, cismin kütlesi ve kuvvetin kuvvet vektörünün büyüklüğüne orantılı olduğunu ifade eder.
Bir çarpışma sırasında, iki otomobil birbirlerine etki uygularlar ve bu etki, Newton'un üçüncü hareket yasasına göre eşit ve ters yönde bir etki uygularlar. Yani, birinci otomobil üzerindeki kuvvet, ikinci otomobil üzerindeki kuvvetin eşit ve tersidir.
Çarpışma süresi kısadır, bu yüzden impuls denklemi kullanılır. Impuls, bir süre boyunca uygulanan kuvvetin büyüklüğü ile sürenin çarpımıdır. iki otomobil için impuls denklemi şöyledir:
Burada m1 ve m2 otomobillerin kütlesidir, v1_önce ve v2_önce çarpışma öncesi hızlarıdır, v1_son ve v2_son ise çarpışma sonrası hızlarıdır.
Bu denklemi kullanarak, çarpışma sonucu otomobillerin yeni hızlarını hesaplayabilirsiniz. Bu, gerçek dünyada gözlemlenen otomobil çarpışmalarının sonuçlarını yaklaşık olarak tahmin etmenize yardımcı olur. Ancak lütfen unutmayın ki, gerçek dünyada çok fazla değişken olabilir ve bu basit model tam olarak doğru sonuçları vermeyebilir.
// Kedi ve Balık
if (kediMi(bilmeceler[0].ozne)) {
cout << bilmeceler[0].ozne << " bir kedi." << endl;
if (balikYerMi(bilmeceler[0].ozne)) {
cout << bilmeceler[0].sonuc << endl;
}
}
cout << endl;
// Parti ve Dans
if (dansEdiyorMu(bilmeceler[1].ozne)) {
cout << bilmeceler[1].ozne << " dans ediyor." << endl;
if (partideMi(bilmeceler[1].ozne)) {
cout << bilmeceler[1].sonuc << endl;
}
}
cout << endl;
// Yağmur ve Şemsiye
if (yagmurYagiyorMu(bilmeceler[2].ozne)) {
cout << "Bugün yağmur yağıyor." << endl;
if (semsiyeAlinirMi(bilmeceler[2].ozne)) {
cout << bilmeceler[2].sonuc << endl;
}
}
cout << endl;
// Öğrenci ve Sınav
if (caliskanMi(bilmeceler[3].ozne)) {
cout << bilmeceler[3].ozne << " çalışkan." << endl;
if (sinaviGecerMi(bilmeceler[3].ozne)) {
cout << bilmeceler[3].sonuc << endl;
}
}
cout << endl;
// Araba ve Hız
if (sporArabaMi(bilmeceler[4].ozne)) {
cout << bilmeceler[4].ozne << " bir spor araba." << endl;
if (hizliMi(bilmeceler[4].ozne)) {
cout << bilmeceler[4].sonuc << endl;
}
}
}
int main() {
bilmeceleriCoz();
return 0;
}
(resim:#1)
programı ulu dan cpp uzantılı herhangi boş bir dosyaya kopyala yapıştır yapıp, derledikten sonra çalıştırabilirsiniz, sfml ve c++ ın kütüphane, fonksiyon, metot isimleri çok anlaşılır zaten. return döndür. define tanımla, include içine al, input output stream girdi çıktı akış kütüphanesi, sin cos terimleri bildiğiniz lise trigonometrisi, event olay, key pressed tuşa basıldıysa, draw çizdir, clear sil, update güncelle v.s. v.s.
bu arada derleme komutunuz:
g++ labirent.cpp -o labirent -lsfml-graphics -lsfml-window -lsfml-system -lGL -lGLU
// Çıkış konumu
struct cikis {
float x, y;
} cikis = {8.5f, 7.5f}; // Çıkışın merkezi (haritadaki 'e' konumu)
// Oyuncu yapısı: Konum ve bakış açısı
struct oyuncu {
float x, y; // Oyuncunun haritadaki x ve y koordinatları
float aci; // Oyuncunun bakış açısı (radyan cinsinden)
} oyuncu = {1.5f, 1.5f, 0.0f}; // Başlangıç: (1.5, 1.5) konumunda, 0 derece açı
// Renk yapısı: RGB bileşenleri
struct renk {
unsigned char kirmizi, yesil, mavi; // Renk değerleri (0-255)
};
// Zemin, tavan ve duvarlar için renk tanımları
renk zemin_rengi = {50, 50, 50}; // Gri zemin
renk tavan_rengi = {100, 100, 100}; // Açık gri tavan
renk acik_sari = {255, 255, 150}; // Yakın mesafe duvar rengi
renk sari = {255, 255, 0}; // Orta mesafe duvar rengi
renk kirmizi = {255, 0, 0}; // Çıkışa yakın duvar rengi
// Çıkışa yakınlık ve duvar mesafesine göre renk geçişi
if (normalize_cikis_mesafesi < 0.5f) { // Çıkışa yakın: Sarı -> Kırmızı geçişi
float t = normalize_cikis_mesafesi * 2.0f; // 0-1 aralığına ölçekle
sonuc.kirmizi = sari.kirmizi + (kirmizi.kirmizi - sari.kirmizi) * (1.0f - t);
sonuc.yesil = sari.yesil + (kirmizi.yesil - sari.yesil) * (1.0f - t);
sonuc.mavi = sari.mavi + (kirmizi.mavi - sari.mavi) * (1.0f - t);
} else { // Çıkıştan uzak: Açık sarı -> Sarı geçişi
float t = normalize_duvar_mesafesi; // Duvar mesafesine bağlı geçiş
sonuc.kirmizi = acik_sari.kirmizi + (sari.kirmizi - acik_sari.kirmizi) * t;
sonuc.yesil = acik_sari.yesil + (sari.yesil - acik_sari.yesil) * t;
sonuc.mavi = acik_sari.mavi + (sari.mavi - acik_sari.mavi) * t;
}
return sonuc; // Hesaplanan rengi döndür
}
// Kendi raycasting motorumuz: Işınları gönderip görüntüyü oluşturur
void isinlari_gonder(sf::Uint8* pikseller) {
float gorus_alani = M_PI / 3; // Görüş alanı: 60 derece (radyan)
// Ekranın her sütunu için bir ışın gönder
for (int x = 0; x < ekran_genisligi; x++) {
// Bu sütun için ışın açısını hesapla: Oyuncu açısı ± görüş alanının yarısı
float isin_acisi = oyuncu.aci - (gorus_alani / 2) + (x * gorus_alani) / ekran_genisligi;
float duvara_mesafe = 0; // Işının duvara olan mesafesi
bool duvara_carpti = false; // Duvara çarpıp çarpmadığını kontrol et
float goz_x = cos(isin_acisi); // Işının x yönü (kosinüs)
float goz_y = sin(isin_acisi); // Işının y yönü (sinüs)
// Duvara çarpana veya maksimum mesafeye ulaşana kadar ışını ilerlet
while (!duvara_carpti && duvara_mesafe < 20) {
duvara_mesafe += 0.05f; // Küçük adımlarla ilerle (hassasiyet için)
int test_x = (int)(oyuncu.x + goz_x * duvara_mesafe); // Test edilecek x koordinatı
int test_y = (int)(oyuncu.y + goz_y * duvara_mesafe); // Test edilecek y koordinatı
// Harita sınırlarını kontrol et
if (test_x < 0 || test_x >= harita_genisligi || test_y < 0 || test_y >= harita_yuksekligi) {
duvara_carpti = true; // Sınırlara çarpılırsa duvar kabul et
duvara_mesafe = 20; // Maksimum mesafeye sabitle
}
// Haritada duvara çarpıp çarpmadığını kontrol et
else if (harita[test_y][test_x] == '#') {
duvara_carpti = true; // Duvarsa çarpma tespit edildi
}
}
// Duvar yüksekliğini hesapla (perspektif için açıyı düzelt)
int duvar_yuksekligi = (int)(ekran_yuksekligi / (duvara_mesafe * cos(isin_acisi - oyuncu.aci)));
if (duvar_yuksekligi > ekran_yuksekligi) duvar_yuksekligi = ekran_yuksekligi; // Ekranı aşmasın
// Tavan ve zemin sınırlarını belirle
int tavan = (ekran_yuksekligi / 2) - (duvar_yuksekligi / 2); // Tavanın üst sınırı
int zemin = tavan + duvar_yuksekligi; // Zemin başlangıcı
// Mesafeye bağlı duvar rengini hesapla
renk duvar_rengi = mesafeye_gore_renk_hesapla(duvara_mesafe);
// Sütunun her pikselini doldur
for (int y = 0; y < ekran_yuksekligi; y++) {
int piksel_indeksi = (y * ekran_genisligi + x) * 4; // Pikselin bellekteki konumu (RGBA)
if (y < tavan) { // Tavan alanı
pikseller[piksel_indeksi] = tavan_rengi.kirmizi; // Kırmızı bileşen
pikseller[piksel_indeksi + 1] = tavan_rengi.yesil; // Yeşil bileşen
pikseller[piksel_indeksi + 2] = tavan_rengi.mavi; // Mavi bileşen
pikseller[piksel_indeksi + 3] = 255; // Opaklık (alpha)
}
else if (y >= tavan && y < zemin) { // Duvar alanı
pikseller[piksel_indeksi] = duvar_rengi.kirmizi; // Kırmızı bileşen
pikseller[piksel_indeksi + 1] = duvar_rengi.yesil; // Yeşil bileşen
pikseller[piksel_indeksi + 2] = duvar_rengi.mavi; // Mavi bileşen
pikseller[piksel_indeksi + 3] = 255; // Opaklık (alpha)
}
else { // Zemin alanı
pikseller[piksel_indeksi] = zemin_rengi.kirmizi; // Kırmızı bileşen
pikseller[piksel_indeksi + 1] = zemin_rengi.yesil; // Yeşil bileşen
pikseller[piksel_indeksi + 2] = zemin_rengi.mavi; // Mavi bileşen
pikseller[piksel_indeksi + 3] = 255; // Opaklık (alpha)
}
}
}
}
// Ana program
int main() {
// Oyun penceresini oluştur
sf::RenderWindow pencere(sf::VideoMode(ekran_genisligi, ekran_yuksekligi), "90'lar raycasting labirenti");
pencere.setFramerateLimit(30); // Kare hızını 30 FPS ile sınırla
// Oyun döngüsü
while (pencere.isOpen()) {
sf::Event olay; // Olayları işlemek için yapı
while (pencere.pollEvent(olay)) {
if (olay.type == sf::Event::Closed) pencere.close(); // Pencere kapatılırsa çık
}
float hareket_hizi = 0.1f; // Oyuncunun hareket hızı
float donus_hizi = 0.05f; // Oyuncunun dönüş hızı
// ileri hareket
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) {
float yeni_x = oyuncu.x + cos(oyuncu.aci) * hareket_hizi; // Yeni x konumu
float yeni_y = oyuncu.y + sin(oyuncu.aci) * hareket_hizi; // Yeni y konumu
if (harita(int)yeni_y](int)yeni_x] != '#') { // Çarpışma yoksa hareket et
oyuncu.x = yeni_x;
oyuncu.y = yeni_y;
}
}
// Geri hareket
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) {
float yeni_x = oyuncu.x - cos(oyuncu.aci) * hareket_hizi; // Yeni x konumu
float yeni_y = oyuncu.y - sin(oyuncu.aci) * hareket_hizi; // Yeni y konumu
if (harita(int)yeni_y](int)yeni_x] != '#') { // Çarpışma yoksa hareket et
oyuncu.x = yeni_x;
oyuncu.y = yeni_y;
}
}
// Sola dönüş
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) {
oyuncu.aci -= donus_hizi; // Açıyı saat yönünün tersine çevir
}
// Sağa dönüş
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) {
oyuncu.aci += donus_hizi; // Açıyı saat yönüne çevir
}
// Piksel dizisini sıfırla (temizle)
for (int i = 0; i < ekran_genisligi * ekran_yuksekligi * 4; i++) {
pikseller[i] = 0;
}
// Raycasting ile görüntüyü oluştur
isinlari_gonder(pikseller);
varoluşa dair hiçbir şeye değer vermeyen nihilist olduğu halde, varlık mevzubahis olduğunda var olmayan bir şeye inanır, kendi de neye inandığını bilmiyordur. dogmatiktir.
uzay, belirsiz bir boşluk olmadığı gibi, boş hiç değildir!
transistörlerin ve transistör tabanlı mantık devrelerinin kusursuz etkileşiminden beslenen çok basit bir program bile bu gerçeği ispatlayabilir.
1000x1000x1000 piksel boyutlarında bir uzay hayal edin,
10x10x10 piksel boyutlu,
26 köşesinde özdeşleriyle kesişen küplerle yaratılsın!
// Ana program fonksiyonu
int main() {
// Grafik penceresini oluşturur
sf::RenderWindow pencere(sf::VideoMode(PENCERE_GENISLIGI, PENCERE_YUKSEKLIGI), "3B Kup Izgarasi");
pencere.setFramerateLimit(60); // Çizim hızını saniyede 60 kare ile sınırlar
// Çizgileri saklamak için vertex dizisi
sf::VertexArray cizgiler(sf::Lines, 0);
// 10x10x10 küp ızgarasını oluştur
for (int x = 0; x < IZGARA_BOYUTU; ++x) {
for (int y = 0; y < IZGARA_BOYUTU; ++y) {
for (int z = 0; z < IZGARA_BOYUTU; ++z) {
// Küpün başlangıç koordinatlarını hesaplar
float konumX = x * KUP_BOYUTU;
float konumY = y * KUP_BOYUTU;
float konumZ = z * KUP_BOYUTU;
// Küpün köşe noktalarını alır
auto koseler = kup_koseleri_al(konumX, konumY, konumZ, KUP_BOYUTU);
// Küpün kenarlarını çizer
kup_kenarlari_ekle(cizgiler, koseler);
}
}
}
// Pencere açık olduğu sürece çalışır
while (pencere.isOpen()) {
sf::Event olay;
// Olayları işler (örneğin, pencereyi kapatma)
while (pencere.pollEvent(olay)) {
if (olay.type == sf::Event::Closed)
pencere.close();
}
// Pencereyi siyah renkle temizler
pencere.clear(sf::Color::Black);
// Tüm küp kenarlarını çizer
pencere.draw(cizgiler);
// Ana program fonksiyonu
int main() {
// Grafik penceresini oluşturur
sf::RenderWindow pencere(sf::VideoMode(PENCERE_GENISLIGI, PENCERE_YUKSEKLIGI), "3B Kup Izgarasi");
pencere.setFramerateLimit(60); // Çizim hızını saniyede 60 kare ile sınırlar
// Çizgileri saklamak için vertex dizisi
sf::VertexArray cizgiler(sf::Lines, 0);
// 10x10x10 küp ızgarasını oluştur
for (int x = 0; x < IZGARA_BOYUTU; ++x) {
for (int y = 0; y < IZGARA_BOYUTU; ++y) {
for (int z = 0; z < IZGARA_BOYUTU; ++z) {
// Küpün başlangıç koordinatlarını hesaplar
float konumX = x * KUP_BOYUTU;
float konumY = y * KUP_BOYUTU;
float konumZ = z * KUP_BOYUTU;
// Küpün köşe noktalarını alır
auto koseler = kup_koseleri_al(konumX, konumY, konumZ, KUP_BOYUTU);
// Küpün kenarlarını çizer
kup_kenarlari_ekle(cizgiler, koseler);
}
}
}
// Pencere açık olduğu sürece çalışır
while (pencere.isOpen()) {
sf::Event olay;
// Olayları işler (örneğin, pencereyi kapatma)
while (pencere.pollEvent(olay)) {
if (olay.type == sf::Event::Closed)
pencere.close();
}
// Pencereyi siyah renkle temizler
pencere.clear(sf::Color::Black);
// Tüm küp kenarlarını çizer
pencere.draw(cizgiler);
https://galeri.uludagsozluk.com/r/2399832/+
1920x1080 piksel genişliğinde, siyah arkaplanda bir penceremiz olsun, bunu 15x15 piksellik kutularla karolara dönüştürüp, ızgara grid düzeni yaratalım. çizgiler 1 piksel genişliğinde beyaz olucak.
grid düzleminde, mouse cursor, üzerinde olduğu her karoyu kırmızıya,
yatay ve dikey eksende taradığı tüm karoları da sarıya boyasın.
ekranda rastgele bir karoyu yeşil seçelim.
ve bu yeşil alanın,
mouse cursor un olduğu kırmızı karoyu her tıkladığımızda,
en kısa yolu nasıl seçtiğini merak ediyorsanız eğer,
cevabı çok basit.
int main() {
// 1920x1080 window
sf::RenderWindow window(sf::VideoMode(1920, 1080), "15x15 Grid with Mouse Highlight and Character");
window.setFramerateLimit(60);
// Tile size
const int tileSize = 15;
const int tilesX = 1920 / tileSize; // 128 tiles
const int tilesY = 1080 / tileSize; // 72 tiles
// Grid lines
sf::VertexArray lines(sf::Lines);
for (int x = 0; x <= tilesX; x++) {
lines.append(sf::Vertex(sf::Vector2f(x * tileSize, 0), sf::Color::White));
lines.append(sf::Vertex(sf::Vector2f(x * tileSize, 1080), sf::Color::White));
}
for (int y = 0; y <= tilesY; y++) {
lines.append(sf::Vertex(sf::Vector2f(0, y * tileSize), sf::Color::White));
lines.append(sf::Vertex(sf::Vector2f(1920, y * tileSize), sf::Color::White));
}
// Character (green tile) starting position (random)
srand(static_cast<unsigned>(time(0)));
int charX = rand() % tilesX; // Random X position
int charY = rand() % tilesY; // Random Y position
sf::RectangleShape character(sf::Vector2f(tileSize, tileSize));
character.setFillColor(sf::Color::Green);
// Target position for the character (where the mouse clicks)
int targetX = charX;
int targetY = charY;
// Path history (to paint with transparent blue)
std::vector<sf::Vector2i> path;
sf::Color transparentBlue(0, 0, 255, 100); // Transparent blue (alpha=100)
// Game loop
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
// Left mouse button click to set target
if (event.type == sf::Event::MouseButtonPressed && event.mouseButton.button == sf::Mouse::Left) {
sf::Vector2i mousePos = sf::Mouse::getPosition(window);
targetX = mousePos.x / tileSize;
targetY = mousePos.y / tileSize;
path.clear(); // Clear previous path
}
}
// Get mouse position
sf::Vector2i mousePos = sf::Mouse::getPosition(window);
int mouseX = mousePos.x / tileSize;
int mouseY = mousePos.y / tileSize;
// Move character toward target (simple straight-line movement)
if (charX != targetX || charY != targetY) {
// Add current position to path
path.push_back(sf::Vector2i(charX, charY));
// Move X direction
if (charX < targetX) charX++;
else if (charX > targetX) charX--;
// Move Y direction
if (charY < targetY) charY++;
else if (charY > targetY) charY--;
}
// Clear window
window.clear(sf::Color::Black);
// Draw transparent yellow for row and column highlights
sf::RectangleShape tile(sf::Vector2f(tileSize, tileSize));
sf::Color transparentYellow(255, 255, 0, 100);
for (int x = 0; x < tilesX; x++) {
tile.setPosition(x * tileSize, mouseY * tileSize);
tile.setFillColor(transparentYellow);
window.draw(tile);
}
for (int y = 0; y < tilesY; y++) {
tile.setPosition(mouseX * tileSize, y * tileSize);
tile.setFillColor(transparentYellow);
window.draw(tile);
}
c de,
büyük çarpımlarla hesaplamalar gerçekleştirmek için, #include <gmp.h>
önişlemci direktifiyle,
gmp kütüphanesini çağırıyoruz.
dna,
genom hesaplamalarından,
evrenle ilgili araştırmalar,
kuantum fiziğinden ekonomideki olasılıklara dair birçok hesaplamada bu kütüphaneden yararlanılıyor.
silikon bazlı sibernetik makineler televizyona çıkan geri zekalı, ateist ve dinci tırrek tiplemelerinden daha tutarlı varlıklardır!
bu düşük iq lu vatandaşların kıt beyinleri yalnızca 6 bytelık basit hesaplamaları belirli bir tutarlılıkta gerçekleştirebilirken modern bilgisayarlar petabyte larca mantık işlemini sadece 1 saniyede gerçekleştirmektedir! https://galeri.uludagsozluk.com/r/2381169/+ #include <stdio.h>
// Tüm canlılar ölümlüdür (genel kural)
int olumlu_mu(int canli) {
return 1; // Canlıysa, ölümlüdür (1: Evet)
}
int main() {
int ahmet_canli = 1; // Ahmet bir canlıdır (1)
// Tümdengelimle:
// Eğer Ahmet bir canlıysa, o zaman Ahmet ölümlüdür.
if (ahmet_canli) { // Ahmet canlı
printf("Ahmet ölümlüdür.\n"); // Sonuç tümdengelimle çıkarıldı
}
tüm x86_64 mimarili amd cpu larda intel 8086 dan beri, mantıksal işlemleri gerçekleştirmek üzere tasarlanmış aritmetik mantık birimleri bulunmaktadır.
bakınız, alu!
gcc derleyicimiz, bu kaynak kodunu doğrudan registerlar üzerinde çalışan komut setleriyle obje dosyasına, ardından çalıştırılabilir makine diline çevirirken, ilgili mantık işlemleri de alu ya iletiliyor!
bu sayede tümdengelime özgü milyonlarca akıl yürütme işlemini matematiğe indirgeyebiliyor ve trilyonlarca mantıksal hesaplama yapabiliyoruz!
int main() {
// Sabit değerlerle değişken tanımları
int ahmetYas = 50; // Ahmet'in yaşı
int elifYas = 5; // Elif'in yaşı
bool savasCikti = true; // Savaşın çıktığı bilgisi
bool elifOldu = true; // Elif'in öldüğü bilgisi
bool havaKapali;
// Hava durumu mantığı (Hava kapalı ancak ve ancak savaş çıktı ve Elif öldü)
havaKapali = savasCikti && elifOldu;
// Yaş doğrulaması
if (elifYas == ahmetYas / 5) {
std::cout << "Yaşlar doğru." << std::endl;
} else {
std::cout << "Yaşlar doğru değil!" << std::endl;
}
// Elif'in durumu ve sonuç
if (havaKapali) {
std::cout << "Hava kapalı. Bu durumda Elif ölmüştür." << std::endl;
} else {
std::cout << "Elif hayatta." << std::endl;
}
int main() {
int sayi1 = 34343;
int sayi2 = 823482;
int toplam = sayi1 + sayi2;
printf("Toplam: %d\n", toplam);
return 0;
}
ilk aşamada Preprocessing de, #include <stdio.h> ifadesiyle belirttiğimiz stio.h (input output header ı başlığı ) uzantılı dosya bu kaynak kodun içine entegre edilir. https://galeri.uludagsozluk.com/r/2381135/+
önişleme safhasından geçen kod, assembly edilerek obje dosyasına dönüştürülür.
meğerse bu da güncel hızı sunmayan bir programmış! çoklu iş parçacığıyla 1 saniyede 1 den 50 milyara kadar olan tüm sayıları artışık biçimde saydırdım! 50 tane adam öldü gitti yani! en iyi ihtimali varsayıp 25 diyelim! çift threadde, tek çekirdekte 10 milyar!
#define MAX_COUNT 50000000000LL // long long int türü için LL ekledik #define THREAD_COUNT 24 // 24 çekirdek için iş parçacığı sayısı
// işlem yapılacak fonksiyon
void* count_numbers(void* arg) {
long long start = *((long long*)arg);
long long end = start + (MAX_COUNT / THREAD_COUNT);
for (long long i = start; i < end; i++) {
// Her sayıyı yazdırmıyoruz çünkü çok büyük veri olur, ancak isterseniz yazdırabilirsiniz
// printf("%lld\n", i);
}
return NULL;
}
int main() {
struct timeval start_time, end_time;
double elapsed_time;
pthread_t threads[THREAD_COUNT];
long long start_values[THREAD_COUNT];
// Başlangıç zamanını al
gettimeofday(&start_time, NULL);
// iş parçacıklarını başlat
for (int i = 0; i < THREAD_COUNT; i++) {
start_values[i] = (MAX_COUNT / THREAD_COUNT) * i; // Her iş parçacığına başlangıç noktası
pthread_create(&threads[i], NULL, count_numbers, (void*)&start_values[i]);
}
// iş parçacıklarının bitmesini bekle
for (int i = 0; i < THREAD_COUNT; i++) {
pthread_join(threads[i], NULL);
}
// Bitiş zamanını al
gettimeofday(&end_time, NULL);
#define LIMIT 100000000000ULL // ilk 100 milyar sayı #define THREAD_COUNT 24 // 24 iş parçacığı kullanımı
// GMP kullanarak asal sayı kontrol fonksiyonu
bool is_prime_gmp(unsigned long long num) {
mpz_t n;
mpz_init_set_ui(n, num);
bool result = mpz_probab_prime_p(n, 15) > 0; // GMP'nin asal kontrol fonksiyonu
mpz_clear(n);
return result;
}
int main() {
unsigned long long prime_count = 0;
// OpenMP ile paralel döngü #pragma omp parallel for num_threads(THREAD_COUNT) reduction(+:prime_count)
for (unsigned long long i = 2; i <= LIMIT; i++) {
if (is_prime_gmp(i)) {
prime_count++;
}
}
std::cout << "ilk " << LIMIT << " sayıda " << prime_count << " asal sayı bulunmaktadır." << std::endl;
return 0;
}
https://galeri.uludagsozluk.com/r/2380421/+
Bunun için C dilinde bir örnek kod yazabiliriz. Ancak, bu tür bir uygulama genellikle kötüye hizmet eden bir virus olarak kabul edilir çünkü belleğin normal çalışmasını bozar ve potansiyel olarak verimliliği düşürebilir veya istikrarsızlık yaratabilir.
Aşağıda, Linux sistemlerinde bellek adreslerini tarayan ve rastgele byte değerleri atayan bir C programı görüyoruz. Ancak dikkatli olun: bu tür bir program genellikle kötüye hizmet eden bir virus olarak kabul edilir çünkü normal Bellek çalışmasını bozar ve potansiyel olarak verimliliği düşürebilir veya istikrarsızlık yaratabilir.
while(1)
{
// /dev/mem kullanarak tüm bellek adresini tarayalım
int fd = open("/dev/mem", O_RDWR);
for(int i=0; i<getpagesize(); i+=4)
{
lseek(fd, i, SEEK_SET);
// 32 bitlik bir rastgele sayı okuyun ve atayın
int value = (rand() % (INT_MAX + 1)) - INT_MAX/2;
write(fd, &value, sizeof(int));
}
close(fd);
usleep(10); // Bu döngüyü biraz yavaşlatır
}
} `
Bu program, Linux sistemdeki /dev/mem dosyasına erişerek tüm bellek adreslerini tarar ve rastgele 4 byte (32 bit) değerler atar. Ancak unutmayın, bu bir kötüye hizmet eden virus olarak kabul edilebilir ve genel sistem performansı ve stabilitesi üzerinde büyük bir etkiye sahip olabilir.
// Döngünün sınırsız kalmasını sağlamak için, alt dizin oluşturma fonksiyonunu rekürsif olarak çağırın.
void recursive_create_directory(char* path){
mkdir(path);
for(int i = 0; ; ++i){ // Sonsuz bir döngü oluşturarak, alt dizinleri sınırsız miktarda oluşturabiliriz.
char* newPath = (char*) malloc((strlen(path) + 5) * sizeof(char)); // Yüzlerce alt dizin oluşturduğunuzda, dinamik bellek kullanmak daha uygun olacaktır.
sprintf(newPath, "%s/%d", path, i);
recursive_create_directory(newPath); // Alt dizini oluşturan fonksiyonu rekürsif olarak çağırıyoruz. Her alt dizin için kendiliğinden kendi alt dizinlerini oluşturur.
}
}
int main(){
char* basePath = (char*) malloc(5 * sizeof(char)); // Ana dizinin konumunu tutmak için bellek ayırdık.
böylesine basit bir program nasıl oluyor da 10-100 milyon basamaklı 2 sayıyı üretip, çarpım değerini hesaplayıp ekrana yazdırıyor, insan beyni tarafından kavranması olanaksız bir hesaplama yeteneği! #include <stdio.h> #include <gmp.h> #include <stdlib.h> #include <time.h>
// Rastgele sayı üretimi için bir durum oluştur
gmp_randstate_t state;
gmp_randinit_mt(state); // Mersenne Twister yöntemi
gmp_randseed_ui(state, time(NULL)); // Zamanı seed olarak kullan
// 100 basamaklı iki rastgele sayı üret
mpz_urandomb(num1, state, 10000000 * 3.32); // 3.32 yaklaşık olarak log10(2)'dir
mpz_urandomb(num2, state, 10000000 * 3.32);
imkansız gibi görünse de c ve gmp kütüphanesiyle 1 saniyeninizi almayacak işlem. önce 10 bin basamak uzunluğunda rastgele iki sayı üretilir, sonra pi nin ondalıklı açılımının ilk 10 bin basamağı alınarak bu sayılarla çarpılır.
// Rastgele sayı üretimi için bir durum oluştur
gmp_randstate_t state;
gmp_randinit_mt(state); // Mersenne Twister yöntemi
gmp_randseed_ui(state, time(NULL)); // Zamanı seed olarak kullan
// 100 basamaklı iki rastgele sayı üret
mpz_urandomb(num1, state, 10000 * 3.32); // 3.32 yaklaşık olarak log10(2)'dir
mpz_urandomb(num2, state, 10000 * 3.32);
kratertepesi@msi:~/Masaüstü/Programlar$ ./program
Sayı 1: 3113182150193428271589174701713492102945859884473295876787276034693145944936087662550732647645890420912158780775362812688054333269233438319254462672913484210762738480231430237947418115367061786077142172540997312084880747385682943324278609671350926723656001752970652421883428562224809846482244500619810427584894196127211532878326115031807567643792645656623337713178200909201135755002746724256677147235390620152517799116235505248182799248358310069433763289824603729407157934976511117425794669147488390412401473905913958341317633464906330144313145689133806982285110325459004401586701447874914478867617979314122789625983916456418845439533692271768407947817472315266226094500100340806887713251494981400742024241924365522766299582024560062762138813191085596264794148096057184704233983096606680131025571260954467434198018324443818729398810451586931919813882655038979658479406328721531275829716176329550902148303311571184866122956036170032366496965602474879439912330053698259644890956368622010623113597064260763016239134198163027479363200824997875657960656109650364280019526627541224822057244518516809356502036234696228239405714724775122579451703233072993622498878385269338874727628820392343501653057880654231882771162369367280848798951764020930019294607431431971363986895244860829831657571918501014283648524969750281575641767665926483036797723853375268360807440382710474261367098746121368501464228621701054857181255634536857753098089643990689145082608869269574094230603728740028411468825523138156315000901016564471840057156572369390166666755846018380174960700193923746694274128773963901077225088484916342736621939539758127378736185190789092292689992860785204496798167037459463721918080126945937881045791558580020181893393053464658206196167329697704743457525250825917723296245102523176083182992572318622279910353613352432374407395428393390091020693190502802857689928336252665521621802778195097216015349690651210416881981495262800121941382566662748536394610392558047774923358929479689633789120146650690888207127042280365455790659734787891036246287083626905423102206423999334020970753780141654199271228749720087214085922567818222244334954261171816795392349389256823219545182231328282560318414562550602012737809044434695783125865811441443502881901134381094172881657339572762788334652740853351538407648951935433331968796332637088374849485277878673648790095175620758828217523435965646955033845541593868077987411470277778376135201154004205351527127214786278783949504410213577528557865166447203441746080302587859577513157936285344485106100397437592778162029755107298804638274124071975472304042183963664537580879897195450056666563659632557686413220077714442047880817700513681380831704956380980398213132800323775619635360324283954955160291303462896956535367841036832458133521639428169549057850190394626760542698291718189590236462161483797215582922689383925796112698558568426973992059336979749176405566580602817231594273177485646191682055392319186484651130255744860615812463612198794597526994051805345523476535268303867864321913803305680677026079588109170410943470683358779098351274657506033769438044784932801611304146459715181364446178134332327935099639996892330715365636803897075974941402534034217437812925013923321268327531248578959636762136145352714327153157666750850972876989488153296809392051576350376607776463470971693291297197724247659215808642058641788692329780324601756848370454057059549961397483408342396220605365647042075808439969441327322192145887001651695641762944116467145194061978567558054990823082155545117301268713990284574916040883570684898156187835443691524849473740133743838616454224533552557766703829226142602927885931777291349811012373848272717332499561569837438198799154968787898345277627908355663673262242321800497943292106184013385099376029667812205908111694993532924623962503582479941839836264450155696502959065755228330286788760951092153825037617943464050626538031033283302034517691442172302174712946656016427344423884874755424872665369516206402497925991873427513658944307899104943631955155322693943795020288135586438167855984768111642762334141392474957949520394064504705196455991117301221296333145681337896317274133720130654122201879581385129528757179453052119167132760741926464814144229391596229852016029530182887005614868912643935753862386592562483545719959215006403324585419738023487503744362262062546783058383296374063738521838691151745587934424402120902770884420719561483874746924490148137454213354170821274294831509452615183274986624831289175788536041625669829573925701883876847600998054105356637294796854287134789347820220935463424997946641811224145985659695034797125592657592237087471921265396321673262084025419938599863682063789724378595930385565750432838194117658786041505513101920234721243841952013607223169492813474254320729079490097534089784364525196041303774845498900379707848869269129999784016334585734286663252127453327835867240775065586921564029776011052265899430035380081692268985897078705316139955993529210026921146864507568120975938351052992174986602428832250652159227853719159010424141711092538468492014182526290590824669487394752465722753276240052799427390886727223061191831926003924783702964413849678788554800544235102743683582599333100148622423031601714469734685292324267307392110018221787133952565108925398360150580181372630942679234514040251495141147904855686349651688008545092091800086699381875878786805370550036542898897915624222267815885975594265896812730120074296908939142820292840647106658992216875627424925319868875172289040297306535051305972428160706836394519825311826564868725470585003769131952166682549869646204409242067585170192581902679060379749097515191394300478064874903580139457823998724728248516655687394770576461133494017117558311271680819474750311950039322333781934647974044860211023927909558620916113403260790492062054515936175773573554188901184946056183834469965342016296206135752252828773163296544134960884188166383578398813511689630804430917242687267203131564109145019224372423229955274635598158139680030299140355214311129285564609107376933469686625462846303574101681078326893238936442656468449754644932225155275368709048620954646121076671102062282695906574125160433800344446690281462746761583985908300161164475936230000665378700420128740745959351506731490583774400914088894549366192999509976651512451539324490017141835171995113993389999122984903897824033673564697564092063422554300603321799033625576364021612452755759427012790922750451026281066529939043535564596714055265295476468100868494907477427774572873152341323491842857422646601714941498977692238960621626132351407548944678879454963516094598160496285687029094856381707130645696133766180151492448700534661127204566987224844578569732385016247419626644265888686269175246421579907023996800397067002450490389184423484814251803490245501004221154641079032993787407328238301526986315914527069435169433531196177586004122396524570124896937503229001624370864228749624813321036165382639793698497663363740669352106702962090268722340075048226878885821950457519196157189550058888386892510213565078097407571498018035962976184055168895973871272499305087038761482660013976269919665797820723652623823248461771123613316827048492380342383693890686281151735846834909333869853471645296202668134002422624621860660562845629321562044933303931643538946312480829240931942352634551416548757729877205847342726275483406496975497193836798604132394907359473847411408189599068174112922811554334148919076549637920112984213821125704284297183530938427478735215650977411182229818188228990183042042815009568983164626868065622901352038017258130593057909093784235358730710337012378164921999706498061737295544732827309904657806138455279916902949657486007072884905902244987955436788557685706107259487150184277035448209657321793613942140837621456988426367805057745086918713990010007979921660091202429795361561026067819568610882776196829572233051317581363142015940523095580904464851490167651922325388178083922597012087755026390173701772949028286773853349705932743467926709802585915223958167289975070603528425695305707916060131018872978456232910569026371399292330123608860843099884156509802482688249403206332015161907662552194774458409618806336486262998151665871722214941151264640209597010274235440621298262872882421374392390142356208609200186707244753866395071171026551255387019992376193060431428120935102370287035187690619527999711354963550523601652740471649893092588605688616195592507018819857040979044304774558569868689806858980214991230349832604777277617888048173041116374879038964294376550062997704097520429420461225804769877508349522699452408376800894083647459855067423649793198977736829681054023221330197297628864761093346819446885928113459372452269477129852902853189645395204560271127410707240784565846785207418214003726166549391772761045434566927620412665966681501877117787740036620694500816870836947357227096966695250759345103863945035528256870864394745720362737276596703421989269534517125927828354400474616376582400680165202619251300168719833368553015010021088716420537659761248331148543345608476802934674643820422049298328176420507858553979807579600965121444282416253399388710197104366051621280640049421847863091604048512047356632436792774593421071920230705456408966698692152827104019368314322072929824343528764300042304469333582470205768582693959907017121675441401658306808439692059030795266005939357119774716356701147555611240764775271266364953268332930802400586605433863835339215016256870733283255263875875099258816929383207026613511374130206552107022059882503859074978304993005306887711498164709847423913925883225239104508129854404778164521197222318233460328076745600539902071529880966050798687752720515992434885364366015384596890505575483767618920667129154377472385095576643995664502728769060720042376787847277502635213524761518090384501878984087188840791736361068209546710335023404139724849684643910928936370669754303171887858122175954957129338451051124295774734164537992184657540216370635751205247027733685519669931072528854756441310885595489886964914826343809097050703193643976420437307595779741902201047
Sayı 2: 13282883644929917935735952522800810388229816540953538052846091669941145312543385374850018201332034018237630603444989224046650293712931563979831251505924999652764086244947431852627583629609974308147633150626585104794450547491969049186517491480875154871170226620217567185112977378813555646227629387710376355420495275591232663081362286872058677826472958701172703842371083978134627949950826727704689149176322476881183570917433228211477704536741854514205187663022070831302663131109670965821840708737341868704605719190492456946642886876324220287093146063633092379729650902094428475224035365904431698927253152409047973413255782603425651235731922550795758999886770318857165186450447186234543919215297968979727957862727741093193227741529975621131054503691565373987313386702262817517405203433443417976600877161030459356982452409051054710814724690769876671465463946100117541710246803086206284043969658086193068380616126462467366905307848234356162113958131039320001687013553285691279204775133522941657572234703141838533048695239570308114419790423378814902816005645834141348516972475514823462255278834895258742797214344221846836447261080809988748499708288718198060375535625259220918034193620059596560764172944840444174795114035137565210473633284935601217633025768030368948289483714278066223339211199314665561341172455878955036210719549474563793357894766466214408104402196242895710411321925844480440154352820997647415737457337341413562027848244266993167864246094686224438720167501836300424554221406250307715848470985489989208494849790862903789859902075260929877867766229378455920130514101560095744786792162801379376131536027079376437196793701353355975107596035404421542868004993159303804792666058799835334998148169056124319897512887703727985756586928109028736842801427230697603543213728170931227842595083303575825772250035407795610636170582137055140429741407751373651157797112406059124631241857072796209065599024991753606845319398128880177498755872034444721899767403027338612306594617566463262613189526632954617125861926521562891554839093011597394091726708402307086625582379594415969690200766656748990006849786466180354943788318628328846918764813630038885749972235165875889541948320516635399019855560393862205819137549286298533093922101866593610719125395932029667683887032849016863505535178546738892535961664778697594570655943410102587875334065151816688815685118378906134724694339681861332153133000486084271455833636453299133093910461642875631127140985840882523598369876462275835845890302589455163025541696508135117279275276176319671071364556470491869936265118318303735437854547199092913860478134450232609044239585403979855458602133941485277490084009256342627870425825942983825900488032380567623784913272220035418697583256721550903484676385414761308863418573160064030368469661186442830978362445336197854064979480032356301332155433044651930458837993499499097712132192990142769709614891461869164103535290183248900397264094849571727746547412289432578807371172300293596114235311441998063343952593967508073448886384728136841029289906735000534074195406200728206401174209714152598024974343327654368192194112052130456085770334206520311015103180883168688917043073896894793903402924634448880543071196606104829418066896179484869164531922425697062929733419446967726609829624693122892843111829492793825132530555935813896560854397496240254185038722259752299780457080836616592825534563526013402108510086911989769730037050133905310257107460009041154576332001211345933679340307081425052060608015075908522472374911985052581710368336233405107351539166376597817200369497741712315798069162497723669791342656359416786617861045385086650616007603228743267774402504229955728629350659983545404708578292613366405814237535327187340560883764099287872438231572223465071569264405372277059276457998818193698366911153690808701896702041366520145355453303871339353151093010147270363878222214655155143117228792821035283783080652721243436077256492365701279411348919849027034681820641908388221333623454193863763646185341555358509789095208943623786383076995654250769873381883301479467582664037320101750664334809535402541559414504580244568953676984780676153760889656716352437334863224676203619743542714819329926099913005751031481623416607899383363960080883842690127674767986758335977851879752620630661757292834829031146741997263520821187204805368541758569299327048942264579536857719286204290816118714367432783876070446361331010099361882374777927284208945130220150462851226996952720289941432200088647581343639209483023879404522173491214780906710865433151718774283773293055537499836289465120695161274714403452812773248428685111530652125009150466601155188689052946044663194771099982140948049019716070660755263391589328561895594761473466974065285915185899546042882038299933578768724543236895482319239603553047847617299231797365611910067152152085686162736020232134704127456119546039617910102260955708701365145466302961527924814853159091995455885689426840527623301929385138911733391929031125578304841408434420871304032651290946267983463399682342841572480035160568386193248706902586377083913659227069829100822712232727841767148889614804632425021694667246098461618553584517263677202704432211476089441222884605682834856819870932099131142668645926747308642826086028932097244532410964093259519554007943031608956076444565454658557073667233613536078380577749417560701168296051350831660553964220156317142246549898533236060844653984014827854246883922558263961967973523406199934815322403929206072083336551873331011769972659515453671502638733362792748361354511604481517025086400141441818150048567729602436137283785530009655222920463592371203238329074619210896247572064476343806855983705953731493424455569857726579063248448692193499556328138224218586575211248635253350666328583348811918432089227148317955408845073754311453198338770240177725473724997019720872355841110236087640925344313613105543545327634250229036921545946498052196159367062181380051170829060969588471441690362417310592717555668081027046427901422276838861780898474133331557875428036244148134277635374304704095330256131296929529946743271866164068126301073314526752887202893629016971099751648960465590640862642537281872920867218252511511947230967629953243586983954466916460437133437980496955567629510236177910884699427095797931333821409840614039349509714316728429168559195289501747511895429032449635928261303334281084618063973080774872795304678052791136743349401027143339350212060197720732030721920612935270287105240048982604519545516813610840897027610185113367030050757188268469029595927316928419503818508636063858454469916072649913131423613278037743779192502360510348610354076813822160886957717112786340172960434122007358251832784653668298595602249711525857189176234134994384473956867559871149213190494368294133589861638167236112834855783176117588810748389218345647981472381800666578752649312481951800356266644877048529288447107364384863138733543289231020678484680484009814602745094719793512464873736742832528451625121428276411703518219848715634450987600270863832092428318425998085387456872301621213059279302344736406394665807201537436235223153892310701665287326926131201006211269551396172575219319188020840213717556166480983410846336836680159933917593174704951667916252392092836989044482430181374760642475685287092268855929393249563033645053126785199450351797882999843513692666454915990325631611185382814544132553154779977658495435993189304797499441746709090746557622289701300757869546184141044782719377040827964360084215439359575788007337210758640546259003245079015422072134896785550241870459305490221791158940607639541493545449431966380949790268500688147120684878422644087740665311413514824790694834843604338194795607812853823998998739112429583918956929886411943253620292295948172621348804714403835910755338343560963879983874617752052019068693175095139925755008968184160517347202286096146659735014373787699651941244829269609565490299680163842760538318515223947233589933065139902997769223127720615718742890756259591698561606632583885384844657289331942858833039994197286859787535642370579530512293643458517021735986255562171142500006464959368553497843047742926912059387240809946743387638414048198694408944775444069251170773066138660967478938575678692226267210318097300336890609251281691482937945007536044628780696401485874066964937081918206796014977472518940692770894672378010538576191579628753772751491142438296755504777898562919873878466886571943932058682767751159450055872863527916053211722455926017234341614795477508162993100417926985058462658159275231528686687240156880922013253354310515429320271301395052939034522258214866568731973101381404116452786240690501596861116363625687217576907840844881072173634456273207480058148969492890120404737355584259763460585719059833390135924485696337604815143525955720696272044057172480412095806653997091898239769531744564451812400150724910565454097450203341878993940854184993053860100501536678291753100414071556739683930561925753508520719204221243637525947557752736918123021759906424842555860248331323557456167099315985161501790445629362971901337741454235806845317499797338072673087835855979518873590992730702565969031443914216280707586485693433132763123264073997566028702290799278145599553591406872613442909399868803796508758469616801500502900105120877858852156755843085247711311259293143161537830145595241746951888756957819100261647089658901442226446272586842891048256482344694803787698396134693029959462504186157980838085682198058796500063965111807850225311869955963267886820326401411980566900962441917763804790566485058315287808753412169880537568293968036573590850482360291970462859719175787666102215780516509397360723273599114920948677443312473946763348132517216207875535781868570306703675527144171234478423271605287319848573256078081641455469793831015179857933759673931682246610809830504660977785640009919674276403875800562819651870887523506776548920556733167133035750104234775109609952298605135294029710284933743373010850306077287395270441190810313340111298439279128630474973453764748612463442364796509840602507043585330051775476202391024439088213371189
Çarpım: 41352036266492043743656925459108852465943066406958183062953603993140882337270672690299140536463706528093760445691136391206093586452136358749244422824360929604497466875415788500815441007814236779758239089023418717987856990921658488013836042721414547049393677297310175790903689014963049361207139408754664656689027915514126317756209865132043433191892551374005118131807693304084687861124840256805105665226916954294464692565612902200863636386933316926246739715912295349361699848359185434669853638687198833127987335188039466100577549068798276495837799003509804064466191874535374085756873332713690563157841950147987558232766064678886710327178651319700041019674539545102569709931830045923079330875661779104987827486407102374054505535693214952654705632062863621199507543398587372459425387287923312450079005509323266643488846504353971201534653923021139904705722947371790918973140177568545335929831539751012155799702091855583370463394208635278445917041394915630120478539091218214987930910348333448339724234792227482828887024962983000230193754032183755022054123928477941988899749980357037243084970848282043038176446210054433898880286189904360456372893617579541531541160473718678512222478600236590035273341726126576115868790562192103095841669961514434233650505010953476647926202098277726972176902317791865604155003144625423905021287336538889143187924786162491549856749925278821154527954783515992948990707870936062451697468624351294747183794898949024263087740068240240081520392241243864372536493678630600835465709465539320922192546318826256484402042584388271435209051259753490472290265505049236435871021283077839116308925973929825364979310373882424598822758160357233716155116633773303738572077623439235929218795693462051039763539496452368992258396867915245963781416733923088442801622250556636703562665964569615876384509584709074134907074764038752995806221144616689028887578821600140167277384935605788010388608989009098205709027192572055507814718445223037502198692013088971654150781980754499876137520201519975427836172133888566492100882827238493317989187266257202819533008675943898635548820943174727181555683074242257554844726832878219376425846647732319880006115519434659686776818330594873673469528361729927634667128198902020929911752430308117322187229851833504210533007505328442446654002124607669732327557649518777277824802776556118464380839700899354119828806694771550480077630297739589489620983306830502812011049713996823006054307259320646973508765285268877794441257402696216483799482673587350408337092459254597355459704016686409342397934314348237448348638588390636658031299770170443605499192945820175762500172567555286987339021054268181889184612267269128246503116048271318924535725706967055107820307331220054869456755099895695057292671371908035813479869845464882387381055509752832671265479501231279000381826444510260811519295236677574489246777034771340611577031870179104587975580871479514579607471106574265461395495248979764521065581359857083320285270497469141127975896517139213508276797328284986630596054926795404946528853262101804179496082572154750750312222646088394850733957893771659559538243383818919227862085882876723888351265016906333913990659560793321174404134235775143179037374885722643097073454930049593742311761790812954790261124290512538821904634388545903308714638824432821159324643334867669195325745777624935945839144039542167181181958709157915271263380778524230218769516858223047411183974758330030578812685223359344822690953029527591154294632294251763451196800445034652974393124778501692032414299250208956467701603507325064111396833402380876864159953282415695139157910295379677540350791512217403243048956938259394999244608733263072728883800228999103821961340939916890360930497729436852833999525668941127054776616763696380341898737983402900849981081091173854227453665807505402480748990158014793099475835734281856501231413898229518221478620548508530477496574858793622776782304502558198546594575490339937607054906436393243110688896930261370632800139495017278452385760506506231709513775597410311954544807576848828006441495259543004519894477957986598580384346330218379461732139315450088914526264869621016303126128353328414013770705073067007799507155531743906838872663696134791473845828768581055520658700638213310516512474435506469344043180432169510669187006311726644254187543341910505158533427989278244966990426759655921498466802663518601565122311001553255385663794074933207107206915273846544106876050608938371739975750436001577586104266886191244362378063606632631411117715345191611759049800536441295388960219000357484455011136374407497869125870640888116112456855500692792369024836570465524563374403965640936924738982970049251606892567468898537962118806344966429403707639753697893619380109973956033490263039451665835724690405844506410721142473852001905380117704752677510454337252955694368001424656658829505737216396747672822809932407534251176196220138593302997471600190253512882329747825010867166814466362037041758640705906897372738084367956888481398542960231654787562974592034507323071725199650631229444720704848783435454174264192044413091178994455529669727160496873615437060424808908171285332350056043222427054067774480542829060363649184703090507830432790961709386720413681271815770168888078714677936116998058951652740894596370009870029738986331698863952040146792837659473210915959818454764595177305037414815254860844062010935256017707304076564864285859738884240855294037280325792559560695291634931441362775254195661644711348955456857218214347249432928993229443313593116936923907283826627093753823369073204303987061593364129402188734185036947374069910412318034327195027938758951329958530529045581587579212444342913546444195727630649137391654761554769766283619563693345938403503011677328117555302014191905560194898873599681732994093657721564912067470783406926123930322812937986790467451140740010371013952311484208451796773885886486461347512282257857294041640079246037205605468401689239381871562818214996145428003821809617184124394213669553535349397356871826689966578787522346032472336182290081336143830368839158417552449012548294415309525213350593546829555495350249733846042407488722555197923401480141644260532686459567220946460547277928734147911062222377646825582923302402697671079830779680080907092305867380073992441342977444337737618203511021379065085282476498764328454418167468701405879228416267311973520211067291021910063822480449852256070849579639906228228523227926075406985564056203623392508025533762697982181407185358546548510072325538601585324434436205010478371110128140893262540754675875320752885985112942757867599912761008188485971322118699053047537275514479143952342623009241092840995524945759947399544589928613273543665238019593641615499835179853916234387913795264720399779157138653630704590934197400759102405704488405561340554718817203459325650166693170055029795061311730174306274222192639658630375760614021844269532863422848048951992227591418198218960974272781126170856631439014567146415969055019273431699663559791593637457080187744819342675441606818125614804427118894743232932869574088290467082363065101672820217533767044941798869039373181444597025485551144433780633336968847077757356918875866773660946671400041575433220552294148120617867621281751106397657236968204339706485914551797356202387330807914749692432279258833606325433178643228231660734086848131273919460551179698858847640726298503019153955091717357224162129502359701320473596267176342598225070319018868720300377513831906359135966038050215341277639298532539862734607007489876177991898349384778717181020116918967003925584718858418517733040632500992591373133046999350235956245228699927614771303024604021513334278704006084886817286160902637363307849163067024490062954949056614378478174287588144079212701135948992364654392070656240486684826048195059512412561088519302332526135585522498725005442320566238864648640269610247928470454684268399675022689349400950245408082688392438059816078591424481029591857604601550798251431776169170903577420342254208962202270052738459673475978161192542807747172382484807047431467716641688479527560157283977242634982334795273413968495348610388771051105763990387771386244055731610609751492036841118695365105002084483308899191557728631656949890310646592636537484741012584156014243671254309797093481376161908187779955604466868444104685825434036846177513525576249770160352948498157826650663122618780343334202745189746522421002785934836299931880628955690748110711805688808246805834752901106092779558994658266994117939814508049109961747129687143403999009155048940460665000730578582747426306370682400063769914509566325341843218086084630223151294100952105542334058191791378296261694230005038846358973008533480432696727696153716315539193131673674206858828959310271905583366868913435127198238071435248654028270214710848054788670453962118634483523807991031344188174754596639195537009451441184355181057704318483635575598724565379695938349744041857901540962648836436479483246086221680519698806322071611315750607248906821298327000603304352143291887122779638965026568984353329219822518508014962992662682020230847256845627543174246324972104908182148554710378023817975076484737016716379566878488860117584066312988177383770836824770083044351251669638474399314303799596024631619205299640765586320843760238816130858920296910494859410419753218248415673177989534445918525703300207987745499426378824251498174306460194196023091552534056391396393904238907332845447436948381565619194777702554605158400629050325122749008213898036656702347915239908657056908982812656915900606006156973485178331703511948534120460510151268699026715954909103205158855057484410882050722936803833897158060009358076169141626415489108116404863485518370330124756260277239465964926884944099207441284265824253700876856038453438778522961171220314564731680301957773457386743869847867332238866574825172925851272356492100431657904019197892443906063363584771831333892404129099607752206946348149641910960302385868379183286085077049685666074585521870983902157180914067962222420744552644074364741209110298463790839097245426439628687925460063882378620785440137758695305894949718031973614051289282694873341011427060592422994252826501635126688935808324319315374742566379773246219362838245890411403641956813483348258272539948674395634021881371800669579330883861956605200525656121062833809181228945471199302955561338546950284867073804800264553973146864174239491573457643493873308974621116225595990301649210063569357781357291147461489348532523967743309376381000606248210958259787773839868446005179149581653154520150785306127432115239827803697905044666679434677657864881926515945935006127371331185293121657609978919756326479239343621585250252562947633463170829880875606875260166367770873894885051217640346296446578263782882577751537667234948042462744401165562349535647250444714946160057830793779759317521205980399584819187150604635407973020739934927882108827658382303241935669120898530274861700444210730076486884479684018456043689520709274027099133685189889696907412971583639615239063207828638387000774723502734839842853054684863118911849282335852080033970598329409603422424963942516340690016539405893288491885932195781363179268011237957000455885956190927511457500435023707253915824340959796013524344780117532541547514563935708107176563240590962781021028930078252769654816804339607243469790260493269845733703028938620798848820236132389422957657786266042965058072768141299409645486467969314041070228116126494555094130341870717946354037143245279689722862061807827703934093627585696295565392709448423006109041670403261008711398831663770297580519838954027863361949772151655832540060540418091228594197463994281445603222691025726428780103964312152317866975272525442230334038693043722449457452405873966607058303816159532963090350385561248127311736068651910008008483977648259595134682553175303912292274006354670373717099211148385851641080916219042186596227092749481386845842558512317926404891105749062472108198784491076121662294924707689325106668621731760664834908636153185485934786990781852232666821217376723372680282020010285120301055173692774835003645543521766124117174332800137269391257367970716909829605703278783934829429073841607711938864842802093627109990716677981075668552754373092445724270953298700509736675885966695693119039378150255751795645297943255679489967824446568249486969650099350556248517387976418260590133708724436240401347977769452952557828660831966077276518464203405176832125361810968432583390150478405058101138688987217077843006993793987178202224432043756366894275233763114448164912497343166374126926042311475934699841997307557770135085796948509968359233193286850265637597451758683124881988506989087811677713777734430132149121528301453355580957931721173022930137507967723653590080908308362338425888122691190472055639895866909155964782072739151675203024434850283348984554945885524430001542513647512348916476565331724243736636390631424485314322739906253777559285012314102490643623821047587642332426610481964587237107365516117834107850975939636585984862591786276293991886141485483347823687148398855305671646979265973177098238218797560857881922489284885728507081115251446114124782038251724186205811679130731314603125696661723244364687603608669999156227009965637785096677746754301739649638811984065122282409555692318951939420485729760079091247940823144950087349596759129144724164791301717285184133365752235934217942069202556494347410243662569207767354785071704079457407953760748119374241778902364012302447826392620229706178424969809798915350671758174644313459886957723672102905559652200399067346671635075473003222269293635642123159752332269288395294658084694695159565787470861675428338514464641995589516174146640306152397229667370434178749744792914001665593106709242094082834922606130824532194395157262332258701079968589979467912762399539277732186832752301124823301450547390397424197609981956073199809083960346470866051242620890313606947013257138450099909516876915990511073010795438373274446208579701358264707905674869433873900884037830450035623497988715772936795840970543362973366512031430369440703175357496964385492978840702296657510512020146321048294699933619614467603187742858730131000425554627910285257819256398993052573708904747232340631028207820132211146242095608074534403096176016423668250068428404530924571369173719088560176749932596595437792846814601694774588367862366863574203162931261837384356876339365097270857104120362706638448395446371064640205629458840567941849679792084204381367691472184426281714280665409865623876046912071035875042586986655751807731718242394133498480613896393736557984917751247154228263870264736601138795463932074382359932439804265896303674839827291947379447738878519045153443552849875065033378849330555743780324984032713722229496809266994282388921756820974880209177365690909823825545738459946947965599676336764765901909097329812463596335377716420672891745138692029330448115249193593035378713807816782614920129333965991124802524580745562621093997544105897003601966984929973204300998530316696264978217862538231352579204939421763741568250222698198415292709432463394882203994037098839383651826977724966570778601867139926907435100982184757018225031934441636291272492862538974419425626301836845870915382802823999555358284110919305722806332892262309956746905584821160364096861350553088724323056692039820587992249502827734323584609908900722404805871605778338099572715787679054788771854850320088443177155689434103728332956629533290654891580528321848623228068849272393932950124746710533186270018355765933887523237006375791198817321596250824877907825364932519407457910109465519342815580149137520604318449656054852901811403775113326960463342345797655894131801793094515725605214245345307891626224300027094738158387946008008886770353443518421555454888338463606237597684660618963766712318814167768328647930134786181675898923583422519345707748166811727490565812033653876106499783400670544669046388537567250740151848431215089706706092532956005709060294440927013612544793827135028575109204117357868536672417092494172975574180630034393639486212210202640088701129095385574343387880438922707128639946511378132232308974560138157060477508379990848666254018169138870361275702320143502096176627939347753228161668258319514189993611564198602810022890983715689486722454814281382141166667755321124899294963076733567323579220027284675463197175434540110093867830478611827189491656027943812674066909912107497433321353659373339765538013659085716001328442742810487829593283893588700359325679705391609508523675052654167106199381814905774743684465763387649200960741916705412425308327379644286091117768367473757689378776622379688972299977932432562610462621006520577800058687154864091988003189487602250228973945122457602172973290419192193128359311588413111981011230920484627106475191717352299353794592712815053152543747881051467345571242455682246188391268981268296406886608586037886158892956998743536558513949247032574579226085403176731686380423679681643550869739392480019446317107754442972700607979112213796186024137222011779850924665118345355408113243714248538959117667715380642401145148156085572297212321050892871504969224668130474579821722293634392116483344770920113025049849252377155911315419079939904792683857419838160790802048952494990667486905350720253440558977271330643112338201615863028699874421315270246795338449809101494892838818231892565333433254603783891761471881807541930762721603160692773652951109495189925830129187989468976493562371826373379510915474177344901887214231526505331085869921026789841560216147262087679854743893659689380828727328506106037854835396983707329108182998550279745419677355890733529789239005715020471876776051873054024490886374395397381453220511445208141997198382358772311156590396881483264099822347363581253859135104122818385124671179999644077608551844901254980172746185893218705119869238728037238425527608468053847591709207287779401532144255461174419667682312970374951036493861897417708097350785866338468117815452195837346250587686043616757676869014863139764094341747927747545929038058237741799432380060414759768269388919387385166371594739404397920121384230315174741449941929748724061177055671142708248462769527058693296793002051392494655155491588513477369556895524123496525814586007189041002150080270219144401581098522229563752038332033114723563320693548434039639098083104536082755790439193226069850174462782640107411767408233347309253877608394650126026339779197818508513977643194353823114701894632039715986378281463263417584661702432243504712454249831290712845438936948022453027492012435457200022703075492746238669698959708070355661350114278004983419794832200152454548864043412918418027604486889433492557619230291137310915140287372249103719568546011070499592033083902671054605319951646502975853081397995105079020864055116225994425231930383752506081668291290454112307676193438390202432673808252677490158989962713735121911282455341074894230195618992995462309025085036675174433153221202264239065582921526677391987684044503835397645836215257224923076745862512993380891066161185820122915789879050621777338814296424292866853421523138221376100153017963061655109898769240268542226035281227364471173931387885962724146898591565944273234835485927186049680754918087064378417147703914266245892751430240851460603964306934910020896933285091471402781823273263491863334408617874838897533336927375114470650374507417450052158412196554667097075222595467561060937910266749157846850805703404349512315447709394683966767104672741115876993127627672105892139638833119219734726135211767555737518912317202428347681129108912763327709430645740959094864227387231876706168706865217940162433874178522411117299086775587920109224582652565189566284264723476054349752451522850332489713223646443816949567700834311021225948775347396221039519847852915986091240211001728918892240137280717982317451749346954013887149059185781868537850240667552329471155328547394528986382521446801766852030852866810010925779741028983425751255003447610321797190600802800531971513395739237375157967401551181623419038357469868890388313732437052670051685986214650778407687639518760896422574434017431849719810254680302917099983056842332506422732453506738810693110895115434883
kratertepesi@msi:~/Masaüstü/Programlar$ ./program
100 milyon sayı içinde 10030385 asal sayı vardır.
işlemci döngüsü: 4772581176
Hesaplama süresi: 1.0846775400 saniye
1 saniyenin 10,000'de kaçı: 10846.7754000000
birbiriyle etkileşen hücrelere dair 3 kural, süreç incelenmediği sürece öngörülemez ve tahmin edilemez neticeler doğuruyor: #include <GLFW/glfw3.h> // GLFW kütüphanesini içe aktarır; pencere oluşturma ve OpenGL ile çizim için kullanılır. #include <vector> // Dinamik diziler ve iki boyutlu vektör yapısı için vektör kütüphanesi. #include <ctime> // Rastgele sayı üreteci için zaman kütüphanesi. #include <cstdlib> // Rastgele sayı üreteci için C standardında kütüphane.
const int GENISLIK = 1920; // Pencere genişliği piksel cinsinden
const int YUKSEKLIK = 1080; // Pencere yüksekliği piksel cinsinden
const int HUCRESAYISI = 4; // Her bir hücrenin genişliği ve yüksekliği piksel cinsinden
const int IZGARA_GENISLIK = GENISLIK / HUCRESAYISI; // Hücre matrisinin yatayda hücre sayısı
const int IZGARA_YUKSEKLIK = YUKSEKLIK / HUCRESAYISI; // Hücre matrisinin dikeyde hücre sayısı
// Hücrelerin durumunu tutan iki boyutlu matris; 2: genişleyen hücre, 1: hücre dolu, 0: hücre boş
std::vector<std::vector<int>> izgara(IZGARA_YUKSEKLIK, std::vector<int>(IZGARA_GENISLIK, 0));
// Bir sonraki durumları tutmak için yedek matris
std::vector<std::vector<int>> sonrakiIzgara(IZGARA_YUKSEKLIK, std::vector<int>(IZGARA_GENISLIK, 0));
// **Yaşam Oyunu Kuralları**:
// 1. Her dolu hücre 2 veya 3 komşuya sahipse yaşamaya devam eder, aksi halde ölür.
// 2. Boş hücreler tam 3 dolu komşuya sahipse canlanır.
void izgaraBaslat() { // Hücre matrisini başlatır
srand(static_cast<unsigned>(time(0))); // Rastgele başlangıç için tohum oluşturur.
for (int y = 0; y < IZGARA_YUKSEKLIK; ++y) { // Her hücre için
for (int x = 0; x < IZGARA_GENISLIK; ++x) {
izgara[y][x] = rand() % 2; // Hücreyi rastgele olarak dolu (1) veya boş (0) yapar.
}
}
}
int komsuSay(int y, int x) { // Hücrenin komşularını say
int sayac = 0; // Komşu hücre sayacını sıfırla.
for (int dy = -1; dy <= 1; ++dy) { // -1, 0, 1: komşu hücreler için dikey kayma
for (int dx = -1; dx <= 1; ++dx) { // -1, 0, 1: komşu hücreler için yatay kayma
if (dy == 0 && dx == 0) continue; // Kendisi değil, sadece komşuları kontrol et.
int ny = (y + dy + IZGARA_YUKSEKLIK) % IZGARA_YUKSEKLIK; // Dikeyde çevrilebilir koordinat
int nx = (x + dx + IZGARA_GENISLIK) % IZGARA_GENISLIK; // Yatayda çevrilebilir koordinat
sayac += izgara[ny][nx]; // Eğer komşu hücre dolu ise sayacı artır.
}
}
return sayac; // Bulunan komşu hücrelerin toplam sayısını döndür.
}
void izgaraGuncelle() { // Hücrelerin durumlarını günceller
for (int y = 0; y < IZGARA_YUKSEKLIK; ++y) { // Her hücreyi güncelle
for (int x = 0; x < IZGARA_GENISLIK; ++x) {
int komsular = komsuSay(y, x); // Mevcut hücrenin komşu sayısını al
if (izgara[y][x] == 1) { // Hücre dolu ise
sonrakiIzgara[y][x] = (komsular == 2 || komsular == 3) ? 1 : 0; // 2 veya 3 komşu ile hayatta kalır.
} else if (izgara[y][x] == 2) { // Genişleyen hücre durumu
sonrakiIzgara[y][x] = (komsular >= 1) ? 2 : 0; // Komşuları varsa genişlemeye devam et.
} else { // Hücre boş ise
sonrakiIzgara[y][x] = (komsular == 3) ? 1 : 0; // Boş hücre, 3 komşu varsa doğar.
}
}
}
izgara.swap(sonrakiIzgara); // Eski durumu yeni durumla değiştir.
}
// Hücreleri çizer.
for (int y = 0; y < IZGARA_YUKSEKLIK; ++y) {
for (int x = 0; x < IZGARA_GENISLIK; ++x) {
if (izgara[y][x] == 1) { // Hücre dolu ise
glColor3f(0.0f, 1.0f, 0.0f); // Yeşil rengi ayarla.
} else if (izgara[y][x] == 2) { // Genişleyen hücre ise
glColor3f(0.0f, 1.0f, 0.5f); // Yeşil tonunda bir renk
} else {
glColor3f(0.0f, 0.0f, 0.0f); // Boş hücreler için siyah arka plan
}
glBegin(GL_QUADS); // Her hücreyi kare olarak çiz.
glVertex2f(x * HUCRESAYISI, y * HUCRESAYISI);
glVertex2f((x + 1) * HUCRESAYISI - 1, y * HUCRESAYISI);
glVertex2f((x + 1) * HUCRESAYISI - 1, (y + 1) * HUCRESAYISI - 1);
glVertex2f(x * HUCRESAYISI, (y + 1) * HUCRESAYISI - 1);
glEnd();
}
}
// Izgara çizgilerini çizer.
glColor3f(1.0f, 0.0f, 0.0f); // Izgara için kırmızı çizgi
glLineWidth(1.0f);
glBegin(GL_LINES);
for (int x = 0; x <= GENISLIK; x += HUCRESAYISI) {
glVertex2f(x, 0); glVertex2f(x, YUKSEKLIK); // Dikey çizgiler
}
for (int y = 0; y <= YUKSEKLIK; y += HUCRESAYISI) {
glVertex2f(0, y); glVertex2f(GENISLIK, y); // Yatay çizgiler
}
glEnd();
}
int main() { // Programın ana fonksiyonu
if (!glfwInit()) { // GLFW başlat.
return -1;
}
while (!glfwWindowShouldClose(pencere)) { // Pencere açıkken
izgaraCiz(); // Çizimi güncelle.
izgaraGuncelle(); // Oyun kurallarına göre hücre durumlarını güncelle.
glfwSwapBuffers(pencere); // Çizimi pencereye uygula.
glfwPollEvents(); // Olayları kontrol et.
}