search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
2 oy
1.3k gösterim

Bir sayı birbirinden farklı 2 asal sayının çarpımı şeklinde oluşuyorsa o sayıya yarı asal sayı denir.Kullanıcıdan istenilen sayının yarı asal sayı olup olmadığını test eden matlab programını yazınız.

Öncelikle merhaba, ben bu soruyu tüm özellikleri denetlemek yerine bu şekilde yazdım bu algoritma ile 8 harici diğer tüm sayılar sağlandığını düşünüyorum acaba doğru mu bu çözüm değilse neden ? İlginiz için teşekkür ederim. İyi günler.

sayac=0;

if n=8

fprintf('yarı asal değildir');

end

if n<=6

fprintf('6 dan büyük bir sayı giriniz.');

else

for i=1:n

if mod(n,i)==0

sayac=sayac+1;

end

end

if sayac==4

fprintf('yarı asal sayıdır.');

else

fprintf('yarı asal sayı değildir.');

end

end

Algoritma kategorisinde 109 puan

1 cevap

1 oy
Selam,

Bir sayının asallığını bulan program yazın diye klişe bir soru vardır ve bildiğim kadarıyla sayının asallığının bulan çok kullanışlı ve performanslı bir yöntem yoktu (matematik dünyasında).

Senin sorun burda iki farklı açıdan incelenmesi gereken bir soru.

- Birincisi verilen sayıyı çarpanlarına ayırmak
- İkincisi bu çarpanların aslında asal mı değil mi olduğunu anlamak.

Senin yazdığın koda baktığım zaman direk elediğim durumlar var

- Ben olsam birden başlamazdım en az ikiden başlardım ki birden başladığın zaman senin sayacını artıracak kafa karışıklığı
- Ben olsam n'ye kadar da gitmezdim n-1 de bırakırdım ki arada bölünebilen sayıları kolayca anlayayım.
- Bundan sonra arada bölme yaparken sonuna kadar denediğin zaman sayı iki den büyük olursa direk olarak yarı asal değildir kararına varabilirsin(bu kısayol olarak güzel olur)
- Eğer sadece bir bölenin çıkarsa sayı başka bir sayının karesi olduğunu anlayacaksın. Sonra o sayı asal mı diye bakman lazım.
- Farz edelim sonuna kadar geldin ve bölen sayısı 2 çıktı, bu durum yarı asal olması için yetiyor mu? Açıklaman itibariyle olmadığını anlıyorum. Çünkü bölenler için de tek tek bakıp asallığını kontrol etmen gerekiyor.

Sen kendine 8 sayısını durum (case) olarak belirlemişsin, sanıyorum 4 * 2  olduğundan iki tane var ama 4 de 2 * 2 olduğu için olmuyor diye düşündün. O zaman ben de şunu düşünüyorum küp olan sayılarda karşılacaksın 27 sayısını dene bakalım senin kodunda nasıl bir tepki veriyor? O da muhtemelen 3 * 9 olarak çıkacak ki bu da yetmiyor.

Başa dönecek olursak önce sayıların bölenlerini bir array'a at ilk tekrar bittikten sonra array içindeki sayıların asal olup olmadığnı kontrol et.

Kolay gelsin.
6.2k puan

İlgili sorular

0 oy
1 cevap 333 gösterim
0 oy
1 cevap 7.2K gösterim
7.2K gösterim
Overload eden metodlar ile override eden metodlar arasındaki fark nedir? Polimorfizmayla alakaları nedir?
6 Kasım 2017 Genel Kavramlar kategorisinde yildiz 193 puan sordu
0 oy
1 cevap 48 gösterim
0 oy
1 cevap 161 gösterim
161 gösterim
@org.junit.jupiter.api.Test // test for whether a condition is true or not .. void checkCertification() { Admin admin = new Admin(); Instructor alican = new Student(1,true,"alican","akay",25); Instructor ibrahim = new Student(2,false," ... ücretini 1,5 ile çarpıcak bi fonkstyon yazmak istiyorum araya ancak nasıl yapıcam bilmiyorum ? Son olarak bunu sormak istedim. Çok teşekkür ederim şimdiden
15 Aralık 2020 Java kategorisinde Spartian 105 puan sordu
0 oy
1 cevap 196 gösterim
196 gösterim
Python kullanarak sys.argv[1] var mı nasıl kontrol edebilirim? if sys.argv[1]: ..... dediğim zaman hata alıyorum.
24 Nisan 2020 Python kategorisinde kenan 6.2k puan sordu