Python:
def carpan():
girdi=input("lütfen bir sayı giriniz")
lenght=len(girdi)
negatif=""
# girdinin ilk karakteri - değilse önce sayı mı değil mi diye kontrol eder, değilse fonksiyonu başlatır ama sayıysa çıktısını verir
if not girdi[0]=="-":
if not str.isdigit(girdi):
carpan()
else:
for i in range(1,int(girdi) +1):
if int(girdi) % i==0:
print(i)
print(-i)
# ilk karakter - ise
else:
# ilk karakter - olduğu için önemsemeyip - den sonrakileri başka, boş bir değişkene atar
for t in range(1,lenght +1):
negatif=negatif+girdi[t]
# - den sonraki karakterin bir tanesi bile isdigit e uymazsa fonksiyonu yineler
if not str.isdigit(negatif):
carpan()
else:
# sayının - karakteri olmayan halinin çarpanını bulmaya çalışır
for b in range(1, int(girdi.strip("-"))+1):
if int(girdi.strip("-")) % b==0:
print(b)
print(-b)
Arkadaşlar merhaba, burada asal sayı testi yapmaya çalıştım ama bu fonksiyonun çok aptalca bir sorunu var. -10 ve -10 dan küçük değer girince iki kez aynı işlemi yapıyor. Bunun olmasını nasıl önlerim. Bir de negatif sayı girince çıktıyı sayı aralığına göre bir veya iki kez veriyordu ya üstüne ek olarak 18. satırdaki işlemimi gösterip "IndexError: string index out of range" diyor. (ama o 18. satırdaki işlemin benzerini dışarda bir yerde yapınca normal bir şekilde çalışıyor)
Bu fonksiyonda radikal bir değişiklik yapmadan nasıl düzeltebiliriz. (Biraz level 1 seviyesindeyim belki önerdiğiniz çözüm yollarını bilmiyor olabilirim affedin)
negatif girince aldığım hata:
Aptallığım için çok özür dilerim asal sayı değil, çarpan testi olacaktı
Son düzenleme: