asal sayılar

Katılım
21 Kasım 2005
Mesajlar
3
Merhaba,
Bir Excel tablosunda yeralan çok sayıdaki ve çok basamaklı sayılar arasından hangilerinin asal sayı olduğunu bulmaya yardımcı olacak bir fonksiyon var mı?
 
Katılım
21 Kasım 2005
Mesajlar
3
Teşekkür ederim. Verdiğiniz linkdeki dosyayı incelemiştim zaten, ancak formdaki sonuçları Excel'e yapıştıramıyorum. Yardımcı olursanız sevinirim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyadaki kodu aşağıdaki ile değiştirirseniz sayfaya aktaracaktır.

[vb:1:d7fc4ca531]Private Sub CommandButton1_Click()
Dim alt, ust, i, j As Double
Dim asal As Boolean
Label3 = ""
Columns(1).ClearContents
alt = Val(TextBox1.Value)
ust = Val(TextBox2.Value)
ListBox1.Clear
ProgressBar1.Min = 0
ProgressBar1.Max = ust - alt
For i = alt To ust
asal = True
ProgressBar1.Value = i - alt
For j = 2 To i - 1
If (i Mod j) = 0 Then
asal = False
Exit For
End If
Next
If asal Then
c = c + 1
ListBox1.AddItem i
Cells(c, "a") = i
End If
Next
Label3 = ListBox1.ListCount & " adet listelendi"
End Sub
[/vb:1:d7fc4ca531]
 
Katılım
15 Mart 2005
Mesajlar
379
Excel Vers. ve Dili
Microsoft 365 En 64 Bit
Altın Üyelik Bitiş Tarihi
20-03-2024
Merhaba,

Bulduğumuz sayıları bir önceki sayıların tamamına bölmeye gerek yoktur.
Bulunan sayıyı bulduğumuz sayının karekökü olan sayılara kadar bölmemiz yeterlidir. Eğer bölünemezse o sayı asal sayıdır.

Bu nedenle, Sayın leventm'nin izni ile yazdığı kodlarında küçük bir değişiklik yaptım. Bu kodla daha hızlı çalışır.

Saygılar.



Kod:
Private Sub CommandButton1_Click()
Dim alt, ust, i, j,k As Double
Dim asal As Boolean
Label3 = ""
alt = Val(TextBox1.Value)
ust = Val(TextBox2.Value)

ListBox1.Clear
ProgressBar1.Min = 0
ProgressBar1.Max = ust - alt
For i = alt To ust
    asal = True
    ProgressBar1.Value = i - alt
    k = Int(i ^ (1 / 2))
    For j = 2 To k
        If (i Mod j) = 0 Then asal = False: Exit For
    Next
    If asal Then ListBox1.AddItem i
Next
Label3 = ListBox1.ListCount & " adet listelendi"

End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sayın leventm'nin izni ile yazdığı kodlarında küçük bir değişiklik yaptım
Sn dost kodlar bana değil Sn veyselemre'ye aittir. Fakat bana ait olsaydı her türlü değişiklik ve öneriden memnun olurdum. Neticede burası bir paylaşım forumu.

Bulunan sayıyı bulduğumuz sayının karekökü olan sayılara kadar bölmemiz yeterlidir.
Bunu bilmiyordum. Buda güzel bir matematik bilgisi oldu.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Dip Not:

Asal sayı, kalansız olarak kendisinden ve 1 sayısından başka pozitif böleni olmayan 1'den büyük sayılardır.

Ã?rnek: 2, 3, 5, .....

Bugüne kadar bulunabilmiş en büyük asal sayı : 2^25964951-1
 
Üst