😎
Asal Sayılar
10 ile 200 arasındaki tamsayılardan asal sayı olanları bulan algoritmayı yazınız.
- 1.10 ile 200 arasındaki sayıları kontrol ederek asal olanları bulmak.
- 2.Asal olanları ekrana yazdırmak.
- Asal sayı: Yalnız bir ve kendisi ile bölünebilen birden büyük doğal sayıdır.
- Bir
i
sayısı asal olup olmadığını tespit etmek içinx=2
denx=i-1
e kadar artan bir sayaç oluştururuz.x
sayının bir böleni olup olmadığını kontrol ederiz.
- 1.
i
,x
, “j”nin tanımlanması. - 2.11’den 99’a kadar döngünün oluşturulması.
x
ilej
ye başlangıç değerinin atanmasıx
ilekök(i) +1
eşit olmadığı sürece:x
ini
nin bir böleni olup olmadığının kontrol edilmesi.
- Asal sayıların ekrana yazdırılması.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int i, x, j; // “i”, “x”, “j”nin tanımlanması
for (i = 11; i < 100; i++){ // 11’den 99’a kadar döngünün oluşturulması
// “x” ile “j”ye başlangıç değerinin atanması
x = 2;
j = 0;
// “x” ile (kök(i)+1) eşit olmadığı sürece:
// “x” değeri hiçbir zaman (kök(i)+1) değeri ile “i”yi bölemez.
// Bu yüzden bu değerin (kök(i)+1) üstünü kontrol etmeye gerek yoktur
while (x != (int)(sqrt(i)) + 1){
if (i % x == 0) { // “x”in “i”nin bir böleni olup olmadığının kontrol edilmesi
j = 1;
break; // En az bir bölen bulunursa sayının asal olmadığını öğrenmek için yeterlidir
} else
x++;
}
if (j == 0)
cout << i << " "; // Asal sayıların ekrana yazdırılması
}
}
import math
# 11’den 99’a kadar döngünün oluşturulması.
for i in range(11, 100):
# “x”e yeni değerinin atanması
x = 2
j = 0
# “x” ile (kök(i)+1) eşit olmadığı sürece:
# “x” değeri hiçbir zaman (kök(i)+1) değeri ile “i”yi bölemez.
# Bu yüzden bu değerin (kök(i)+1) üstünü kontrol etmeye gerek yoktur
while (x != int(math.sqrt(i)) + 1):
if (i % x == 0): # “x”in “i”nin bir böleni olup olmadığının kontrol edilmesi
j = 1
break # En az bir bölen bulunursa sayının asal olmadığını öğrenmek için yeterlidir
else:
x += 1
if (j == 0):
# Asal sayıların ekrana yazdırılması
print(i)
public class Asal {
public static void main(String arg[]) {
int i, x, j; // “i”, “x”, “j”nin tanımlanması
for (i = 11; i < 100; i++) { // 11’den 99’a kadar döngünün oluşturulması
// “x” ile “j”ye başlangıç değerinin atanması
x = 2;
j = 0;
// “x” ile (kök(i)+1) eşit olmadığı sürece:
// “x” değeri hiçbir zaman (kök(i)+1) değeri ile “i”yi bölemez.
// Bu yüzden bu değerin (kök(i)+1) üstünü kontrol etmeye gerek yoktur
while (x != (int)(Math.sqrt(i)) + 1){ // “x”in “i”nin bir böleni olup olmadığının kontrol edilmesi
if (i % x == 0) {
j = 1;
break; // En az bir bölen bulunursa sayının asal olmadığını öğrenmek için yeterlidir
} else x++;
}
if (j == 0)
System.out.println(i); // Asal sayıların ekrana yazdırılması
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Asal{
class Program{
static void Main(string[] args){
int i, x, j; // “i”, “x”, “j”nin tanımlanması
for (i = 11; i < 100; i++){ // 11’den 99’a kadar döngünün oluşturulması
// “x” ile “j”ye başlangıç değerinin atanması
x = 2;
j = 0;
// “x” ile (kök(i)+1) eşit olmadığı sürece:
// “x” değeri hiçbir zaman (kök(i)+1) değeri ile “i”yi bölemez.
// Bu yüzden bu değerin (kök(i)+1) üstünü kontrol etmeye gerek yoktur
while (x != (int)(Math.Sqrt(i)) + 1){
if (i % x == 0){
j = 1;
break; // En az bir bölen bulunursa sayının asal olmadığını öğrenmek için yeterlidir
}
else x++;
}
if (j == 0)
Console.WriteLine(i); // Asal sayıların ekrana yazdırılması
}
Console.ReadLine();
}
}
}

11 13 17 19 23
29 31 37 41 43
47 53 59 61 67
71 73 79 83 89
97
- 1.En az bir bölen bulunursa sayının asal olmadığını öğrenmek için yeterlidir. O yüzden sonraki değerleri kontrol etmeden döngüden çıkılır.
- 2.
x
değeri hiçbir zaman(kök(i)+1)
değeri ilei
yi bölemez. Bu yüzden bu değerin(kök(i)+1)
üstünü kontrol etmeye gerek yoktur. Örnek:i= 10
içinkök(10)+1
değeri hiçbir zaman 10’u tam bölemez. Diğer sayıları da buna kıyas edebiliriz.
Last modified 3yr ago