C'de matristeki asallar nasıl bulunur?

KOUsoftware

Hectopat
Katılım
1 Nisan 2020
Mesajlar
157
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Buradaki ekran ciktisinda asallari 0 olarak yazdırmak istiyorum. Nasıl bir ekleme gerek? Dizi kullanmadan.
 
Son düzenleyen: Moderatör:
Asal sayıları bulan (isPrime) bir fonksiyon yazın, eğer asalsa 1 dönsün değilse 0. "a++" yaptıktan sonra da if (isPrime(a)==1) sorgusuyla, doğruysa 0 yazdırın değilse "a" değerini yazdırın.
 
Asal sayıları bulan (isPrime) bir fonksiyon yazın, eğer asalsa 1 dönsün değilse 0. "a++" yaptıktan sonra da if (isPrime(a)==1) sorgusuyla, doğruysa 0 yazdırın değilse "a" değerini yazdırın.
Olmadı
 

Dosya Ekleri

  • Screenshot_2022-11-15-21-56-14-551_com.miui.gallery.jpg
    Screenshot_2022-11-15-21-56-14-551_com.miui.gallery.jpg
    43,6 KB · Görüntüleme: 28
C:
#include <stdio.h>
#include <math.h>

int isPrime(int value) {
    if ((value & 0x1) == 0) return 0;
    const int LIMIT = (int)sqrt(value);
    for (int i = 3; i <= LIMIT; ++i) if (value % i == 0) return 0;
    return 1;
}

void printPrimeMatrix(int row, int col) {
    for (int i = 0; i < row; ++i) {
        for (int j = 0; j < col; ++j) {
            const int current = i * col + j;
            printf("%4d", isPrime(current) == 1 ? 0 : current);
        }
        printf("\n");
    }
}

int main() {
    printPrimeMatrix(10, 5);
    return 0;
}

Bazı yerlerde kısa yollar kullandım ancak anlaşılmayacak şeyler değiller.

& 0x1 kısmını anlatmam gerekirse bir Integer'ın LSB'si (En az anlamlı bit) eğer 0 ise sayı çift eğer 1 ise sayı tektir. 0x1 yani 1 ile bitwise bir maskeleme yapıp sadece LSB'yi alıyorum. Ve bu değerin 0 veya 1 olmasına göre tek veya çift olduğunu kolayca ve hızlıca öğrenebiliyorum. % 2 şeklinde modulo operatörü de kullanılabilirdi.

Bash:
   0   0   2   0   4
   0   6   0   8   9
  10   0  12   0  14
  15  16   0  18   0
  20  21  22   0  24
  25  26  27  28   0
  30   0  32  33  34
  35  36   0  38  39
  40   0  42   0  44
  45  46   0  48  49
 
Bir fonksiyon tanimladim girdiğim sayı asalsa 0 değilse girdiğim sayıyı döndürecek onu kullandim.
 

Dosya Ekleri

  • Screenshot_2022-11-18-17-37-03-875_com.google.android.apps.photos.jpg
    Screenshot_2022-11-18-17-37-03-875_com.google.android.apps.photos.jpg
    44,9 KB · Görüntüleme: 19

Yeni konular

Geri
Yukarı