Trigonometri Açı Modülleri Programı

Trigonometri Açı Modülleri Programı, özellikle öğretmenlere trigonometri alanında çeşitli etkinlikler ve uygulamalar hazırlamada kolaylık sağlamak amacıyla geliştirilmiştir. Açı birimlerinin dönüşümleri, toplama-çıkarma işlemleri ve çarpma işlemleri gibi temel trigonometri konularını kapsayan modüller sayesinde, öğretmenler hızlıca soru ve cevap PDF dosyaları oluşturabilirler. Böylece sınıf içi etkinlikler, bireysel çalışmalar ve sınav hazırlıkları için pratik materyaller oluşturmak çok daha kolay hale gelir.

Trigonometri Açı Modülleri Programı, Python programlama dili ve Tkinter kütüphanesi kullanılarak geliştirilmiştir. Tkinter, Python’un standart GUI (grafik kullanıcı arayüzü) kütüphanesi olup, platformlar arası uyumluluk sağlar ve kolay arayüz tasarımı yapmaya olanak tanır. PDF dosyalarının oluşturulması için ise ReportLab kütüphanesi kullanılmıştır. Program, Windows, macOS ve Linux gibi farklı işletim sistemlerinde çalışabilir. Python’un esnekliği sayesinde hem eğitim hem de profesyonel amaçlarla rahatlıkla kullanılabilecek bir araç olarak tasarlanmıştır. 

| | | Devamı... 0 yorum

Açı İşlemleri ve Grafik Çizimi Programı

Trigonometri Açı İşlemleri ve Grafik Çizimi  programı, ihtiyaca binaen yazılmış küçük bir modüldür. Temel trigonometrik açı işlemlerini kolay ve hızlı bir şekilde gerçekleştirmek amacıyla geliştirilmiş kapsamlı bir araçtır. Kullanıcı dostu arayüzü sayesinde, trigonometrik hesaplamalarla uğraşan öğrencilerden mühendis ve matematikçilere kadar herkes için basit hesaplamaları zorlanmadan yapar. Açıyı saniyeden dereceye dönüştürme, girilen açının trigonometrik fonksiyon değerlerini hesaplama, girilen iki açı için açılar üzerinde toplama, çıkarma ve çarpma işlemleri yapma ve basit  trigonometrik fonksiyon grafik çizimleri gibi işlemleri kolayca yapabilir. Program, trigonometrik fonksiyonların grafiklerini görsel olarak çizme imkânı da sunarak, matematiksel kavramların görselleştirilmesini sağlar.

 

| | | Devamı... 0 yorum

Asal çarpan Hesaplama Modülü (Python Kod)

Asal sayı, yalnızca 1 ve kendisi olmak üzere iki pozitif böleni olan bir doğal sayıdır. Bir sayının asal sayı olabilmesi için 1’den büyük olması ve kendisinden başka hiçbir sayıya tam bölünmemesi gerekir. En küçük asal sayı 2’dir ve aynı zamanda tek çift asal sayıdır. 1 asal sayı olarak kabul edilmez, çünkü yalnızca bir pozitif böleni vardır. Asal sayılar, matematikte sayıların yapı taşları olarak kabul edilir ve diğer doğal sayılar bu asal sayıların çarpımıyla elde edilebilir. Asal çarpan, bir sayının asal olan çarpanlarına denir. Örnek olarak 20 sayısının asal çarpanları 2 ve 5 tir. 1, 4, 10, ve 20 ise 20 sayısını tam olarak böldüğü halde asal çarpan değildir. 
Fibonacci sayısı, Fibonacci dizisinde yer alan bir sayıdır. Bu dizi, 1 ile başlar ve her sayı kendisinden önce gelen iki sayının toplamı olarak elde edilir. Yani dizinin ilk terimi 1 sonraki terim 1’in toplamı olan 1, üçüncü terimi 1 ile 1’in toplamı olan 2, dördüncü terimi 1 ile 2’nin toplamı olan 3 şeklinde devam eder. Bu şekilde oluşan sayı dizisi 1, 1, 2, 3, 5, 8, 13, 21, 34, 55... şeklindedir. Fibonacci sayıları hem matematikte hem de doğada sıkça karşımıza çıkar. Bitkilerin yaprak dizilimleri, çiçeklerin yapısı ve bazı hayvanların büyüme düzenleri gibi doğal örneklerde bu sayıların izine rastlanabilir. Ayrıca bilgisayar bilimleri ve algoritmalar gibi teknik alanlarda da kullanılır. 
Yukarıda anlatılan matematiksel tanımlara benzer şekilde, sayı özelliklerini görmek amacıyla bir program hazırlama gereği duyduk. Buna göre “Asal Çarpan Hesaplama Modülü” adlı Python uygulaması, öğrencilerin ve matematik meraklılarının bir sayının özelliklerini detaylı biçimde inceleyebilecekleri çok işlevli bir modül olarak tasarlanmıştır. Bu programın odak noktası, kullanıcı tarafından girilen pozitif bir tam sayının asal çarpanlarını ve daha birçok matematiksel niteliğini hesaplamak ve göstermek, böylece sayılarla ilgili kavrayışı derinleştirmektir. Programın işlevleri arasında şunlar yer alır: Verilen sayının asal olup olmadığını belirleme, Sayının asal çarpanlarını bulma, Sayının pozitif ve negatif tüm bölenlerini listeleme, Asal olmayan pozitif bölenleri ayırma, Tek ve çift pozitif bölenleri tespit etme, Pozitif bölenlerin toplamını hesaplama, Pozitif bölenlerin çarpımını bulma, Sayının Fibonacci dizisinde olup olmadığını kontrol etme, Sayının “mükemmel sayı” olup olmadığını belirleme, Sayının palindrom (tersiyle aynı) olup olmadığına bakma, Sayının karekök değerini hesaplama, Sayının asal çarpanlarının üs gösterimli biçimini hazırlama  
Teknik yapısı bakımından program, Python’un standart ve yaygın kütüphanelerini kullanır. Örneğin math kütüphanesi karekök işlemleri ve sayısal hesaplamalar için kullanılırken, tkinter kütüphanesi grafiksel kullanıcı arayüzünü (GUI) oluşturmak için devreye girer. Burada program kodlarını kullanarak gerekli arayüz iyileştirmelerini yapabilirsiniz. Arayüz penceresi kullanıcıdan bir sayı girişi alır ve “Hesapla” düğmesine basıldığında tüm bu özellikleri hesaplayıp ekranda uygun metin kutularında gösterir. Program ayrıca girilen sayının asal çarpanlarını üs gösterimiyle biçimlendirir. Bu, öğrencilerin asal çarpanlara ayırma işlemini hem sayı düzeyinde görmelerine hem de sembolik olarak kavramalarına yardımcı olur.  
Amaç açısından bu modülün temel hedefi, sayılarla ilgili birçok kavramı tek bir uygulamada kapsayarak, kullanıcıların asal çarpanlara ayırma, bölenler, mükemmel sayı, Fibonacci, palindrom gibi kavramları bir bütünlük içinde öğrenmesini sağlamaktır. Öğrencilerin soyut kavramları somut örneklerle görerek pekiştirmesini, sayısal düşünme becerilerini geliştirmesini destekler. Aynı zamanda öğretmenler için de derste anlatılan teoriyi uygulamaya dönüştürecek bir yardımcı rol üstlenir. Kullanım açısından uygulama oldukça kullanıcı dostudur. Kullanıcı, arayüzde bir sayı girer, “Hesapla” butonuna basar; program da anında sayının tüm yukarıda sayılan özelliklerini hesaplayıp ekranda gösterir. Hatalı ya da negatif giriş yapıldığında uygun uyarılar verilir. Böylece hem öğretmen tarafından ders materyali olarak hem de öğrencilerin bireysel alıştırmaları için kullanışlı bir araç haline gelir.  
Anlatılan sayı özelliklerini hesaplayan Python kodlu matematik programı, görseli aşağıda verilmiştir. Resmi büyütüp yazılımın özelliklerini inceleyebilirsiniz. Programın "exe" formatlı hali ve açık kaynak kodu da ekli dosyada ilave edilmiştir. Derslerinizde kullanabilirsiniz. Kadir PANCAR
 

Kadane Algoritması

Kadane Algoritması, belirli bir sayı dizisi içindeki maksimum alt dizi toplamını bulmak için kullanılan dinamik bir programlama tekniğidir. Dinamik Programlama, karmaşık bir problemi daha basit alt problemlerden oluşan bir koleksiyona bölerek, bu alt problemlerin her birini yalnızca bir kez çözerek ve çözümlerini bellek tabanlı bir veri yapısı (dizi, harita vb.) kullanarak saklayarak çözme yöntemidir. Yani bir dahaki sefere aynı alt problem ortaya çıktığında, çözümünü yeniden hesaplamak yerine, daha önce hesaplanan çözüme bakılır ve böylece hesaplama süresinden tasarruf edilir. Adını mucidi Jay Kadane'den alan algoritma; bilgisayar bilimi ve veri analizinden finans ve görüntü işlemeye kadar çeşitli alanlarda uygulamalara sahiptir. Algoritma 1984 yılında Jay Kadane tarafından önerilmiştir ve O(n) zaman karmaşıklığına sahiptir. 
Kadane Algoritması, belirli bir dizideki maksimum alt dizi toplamını bulmak için kullanılan doğrusal bir zaman algoritmasıdır. Bir alt dizi, dizi içindeki öğelerin bitişik bir alt kümesi olarak tanımlanır. Algoritma, pozitif ve negatif sayıları çok verimli bir şekilde ele alır, bu da onu alt dizileri içeren birçok sorunu çözmek yerine daha pratik çok yönlü bir çözüm aracı haline getirir.Kadane'nin algoritmasından önce, maksimum alt dizi problemini çözmek için tüm olası alt dizileri kontrol eden kaba kuvvet yaklaşımı ve böl ve yönet algoritması gibi başka algoritmalar önerilmişti. Ancak bu algoritmalar daha yüksek zaman karmaşıklığına sahiptir ve Kadane'nin algoritmasından daha az verimlidir. Kadane'nin Algoritmasının altında yatan mekanizmaları, Java kodu uygulamalarını, adım adım süreci, Kadane'nin algoritma leetcode'unu, C, C++'yi, zaman karmaşıklığını, avantajlarını ve dezavantajlarını, pratik uygulamaları ve daha fazlasını anlamanız sizin için faydalı olacaktır.

Kadane Algoritması, dizi üzerinde yineleme yaparak ve her konumda biten alt dizinin maksimum toplamını takip ederek çalışır. Her i konumunda, iki seçeneğimiz vardır: ya i konumundaki elemanı geçerli maksimum alt diziye ekleyin ya da i konumunda yeni bir alt dizi başlatın. Bu iki seçeneğin maksimumu i konumunda biten maksimum altdizidir.
Yazılım dilinde bu algoritma şu şekilde işler: Başlangıç toplamı max_so_far ve max_ending_here değerleri 0 olarak alınıp dizi öğeleri tek tek incelenir. Sırasıyla şu ana kadar görülen maksimum toplamı ve geçerli konumda biten maksimum toplamı takip etmek için max_so_far ve max_ending_here olmak üzere iki değişkeni her dizi elemanında korunur. Algoritma, her iki değişkeni de dizinin ilk öğesinden başlayarak sırasıyla değiştirir. Daha sonra dizinin elemanlarını aldıktan sonra geçerli toplamı maksimum toplamla kıyaslayarak ikinci öğeden dizinin sonuna kadar aynı işlemler tekrarlanır. Her i konumunda, geçerli öğenin maksimumunu ve önceki maksimum alt diziye eklenen geçerli öğeyi alarak max_ending_here'i güncellenir. Daha sonra max_so_far'ı max_so_far ve max_ending_here'nin maksimumu olacak şekilde güncelleme işlemine devam edilir. Geçerli toplam maksimum toplamdan büyük ise artık yeni maksimum toplam değeri buna göre güncellenir aksi halde önceki maksimum toplam aynı kalır. Algoritma, dizideki herhangi bir alt dizinin maksimum toplamı olan max_so_far değerini sürekli olarak döndürür. Dizinin son terimine gelince işlem biter ve maksimum toplamı veren alt dizi elde edilir.
Kadane Algoritmasını şöyle bir sayı dizisi örneğiyle gösterelim:
Giriş Dizisi: [-2, 1, 6, -3, 4, -1, -7, -3, 5] Bu dizinin maksimum altdizi toplamını bulmak istiyoruz. Bu sorunu çözmek için Kadane'nin algoritmasını uygulayabiliriz.
İki değişkeni başlatarak algoritmayı başlatıyoruz:
1) max_so_far: Bu değişken şu ana kadar gördüğümüz maksimum alt dizi toplamını takip edecektir. (Geçerli Toplam)
2) max_ending_here: Bu değişken mevcut endekste biten maksimum toplamı takip edecektir. (Max Toplam)
3) İlk başlangıç toplamı max_so_far ve  max_ending_here=0 olur. Daha sonra ikinci elemandan başlayarak dizi boyunca toplamları yineliyoruz: Öğe -2 ye gidip yeni toplam -2 olur. (0+(-2)=-2) [Sub:-2]
4) Geçerli öğeyi önceki toplama ekleyerek geçerli toplamı güncelleyin: Geçerli Toplam=0+(-2)=-2 [Sub:-2]
5) Şu ana kadar görülen maksimum toplamı güncelleyin: 0+(-2)=-2 olur.(Maksimum Toplam=-2) [Sub:-2, Max:-2]
6) Dizi boyunca ilerleyerek yerel toplam (Geçerli toplam) ve maksimum toplam sonuçlarını yinelemeye başlayalım.
Dizide öğe 1 elemanına gelince: Geçerli toplam -1 olur. (-2+1=-1)  [Sub:-1]
Maksimum toplam, geçerli toplam olan -1, max toplam -2 yi geçtiği için -1 olarak güncellenir. [Sub:-1, Max:-1]
7) Öğe 6 elemanına gidelim: Yeni geçerli toplamı 5 olur. ((-1)+6=5) Maksimum toplamı ise 5 toplamı önceki maksimum toplam olan -1 sayısını geçtiği için güncellenir ve maksimum toplam 5 olur.  [Sub:5, Max:5]
8) Öğe -3'e gelince:Yeni geçerli toplamı 2 olur. (5+(-3)=2) Maksimum toplamı ise 2 toplamı önceki maksimum toplam olan 5 sayısını  sayısını geçemediği için aynı kalır. Yeni maksimum toplam halen 5'tir. [Sub:2, Max:5]
9)Öğe 4'e gelince:Yeni geçerli toplamı 6 olur. (2+4=6) Maksimum toplamı 6 ise önceki max toplam 5'i geçtiği için yeniden güncellenir ve yeni maksimum toplam 6 olur. [Sub:6, Max:6]
10)Öğe -1'e gelince:Yeni geçerli toplamı 5 olur. (6+(-1)=5) Maksimum toplamı ise 5 toplamı önceki maksimum toplam olan 6 sayısını geçemediği için halen aynı kalır ve 6 olur. [Sub:5, Max:6]
11)Öğe -7'e gelince:Yeni geçerli toplamı -6 olur. (5+(-7)=-2) Maksimum toplamı ise -2 önceki maksimum toplam olan 6 sayısını geçemediği için aynı kalır. [Sub:-2, Max:6]
12)Öğe -3'e gelince:Yeni geçerli toplamı -5 olur. ((-2)+(-3)=-5) Maksimum toplamı ise -5 önceki maksimum toplam olan 6 sayısını geçemediği için aynı kalır. [Sub:-5, Max:6]
13)Öğe 5'e gelince:Yeni geçerli toplamı 0 olur. ((-5)+5=0) Maksimum toplamı ise 0 toplamı önceki maksimum toplam olan 6 sayısını artık geçemediği için aynı kalır. [Sub:0, Max:6]
Tüm dizi için bu işleme devam edip en son öğeye gelindiği için işlem biter. Bu örnekteki maksimum alt dizi, toplamının en büyük olduğu değer 6 olduğundan buna uygun bir alt dizi [-2, 1, 6, -3, 4] olur.
Java ve C++ programlamada Kadane Algoritması şöyle çalışır:
1)İki değişkeni, max_so_far ve max_ending_here'i 0'a başlatın.
2)Diziyi soldan sağa doğru yineleyin ve her öğeyi tek tek inceleyin.
3)Her öğe için, maksimum değer ya geçerli öğe ya da geçerli öğe ile max_ending_here'in toplamı olduğundan max_ending_here'i güncelleyin.
4)Max_so_far'ı mevcut max_so_far veya max_ending_here'in maksimumu kadar güncelleyin.
5)Dizideki tüm öğeler için 3. ve 4. adımları tekrarlayın.
6)Yinelemenin sonundaki max_so_far değeri maksimum altdizi toplamı olacaktır.
#include <iostream>
using namespace std;
int maxSubarraySum(int arr[], int size) {
  int maxEndingHere = arr[0];
  int maxSoFar = arr[0];
  for (int i = 1; i < size; i++) {
      maxEndingHere = max(arr[i], maxEndingHere + arr[i]);
      maxSoFar = max(maxSoFar, maxEndingHere);
  }
  return maxSoFar;
}
int main() {
  int nums[] = {-2, -1, -3, 4, -1, 2, 1, -5, 4};
  int size = sizeof(nums) / sizeof(nums[0]);
  int maxSum = maxSubarraySum(nums, size);
  cout << "Maximum subarray sum: " << maxSum << endl;
  return 0;
}
Kaynakça:
https://www.tpointtech.com/kadanes-algorithm
https://www.simplilearn.com/kadanes-algorithm-article
https://www.interviewbit.com/blog/maximum-subarray-sum/
https://www.guru99.com/tr/largest-sum-contiguous-subarray.html
https://www.codecademy.com/resources/docs/general/algorithm/kadanes-algorithm
 

Smith Sayısı (Wilansky)

1 den büyük asal olmayan bir tamsayının rakamlarının toplamı, sayı asal çarpanlarına ayrılarak yazıldığında bu yazılışta bulunan  tüm asal çarpanların rakamlarının toplamına eşit oluyorsa bu tür   sayılara Smith sayısı denir.

Örnek: ( 121 bir Smith sayısıdır. )
121  = 11 * 11          
1 + 2 + 1   1 + 1 + 1 + 1            
4 = 4     

Örnek: ( 166 bir Smith sayısıdır. )
166 = 2 * 83      
1 + 6 + 6  = 2 + 8 + 3               
13  = 13    

Bu sayılarla ilgili çıkmış bir üniversite sorusu bile vardır. 2005 yılında yapılan tek basamaklı sınav sisteminde ÖSS de bu şekilde tanımı verilerek hazırlanmış bir soru karşımıza çıkmaktadır. 

Lehigh Üniversitesi Matematik Bö-lümü’nde öğretim üyesi olan Albert Wilansky, 1982 yılında üvey kardeşi Herold Smith’i aramak için telefonun başına geçer ve numaraları çevirir: 4-9-3-7-7-7-7-5.  Bir yandan kardeşi ile konuşur­ken bir yandan da alışkanlığı nedeniyle telefon numarası 4937775′i asal çarpan­larına ayırmaya başlar. Konuşmalar ola­ğan seyrinde devam ederken bir anda Wilansky durgunlaşır ve kardeşinin söy­lediklerine tepki vermemeye başlar.  Sayı­yı çarpanlarına ayırdığı kağıtta gözü eşit­liğe takılmıştır:
4937775 = 3 x 5 x 5 x 65837. Eşitliğin her iki tarafındaki ra­kamları topladığında kalbi hızlı hızlı at­maya başlar ve gözlerine inanamaz: 4+9+3+7+7+7+5 = 3+5+5+6+5+8+3+7 = 42. Kardeşine hiçbir şey söylemeden bü­yük bir heyecanla telefonu kapatır ve ay­nı özellikte benzer sayılar aramaya baş­lar. Görür ki keşfettiği özelliğe sahip sonsuz tane sayı bulunmaktadır.  O gü­nün anısına Wilansky, rakamları toplamı asal çarpanlarının rakamlarının toplamı­na eşit olan sayılara “Smith Sayıları” adı­nı verir.
Her asal sayının sadece bir tane asal çarpanı olduğu için (o da sayının kendi­sidir) tüm asal sayılar aslında birer Smith Sayısı’dır. 10000′den küçük sayı­lara baktığımızda da 376 adet Smith Sa­yısı olduğunu görürüz: 
4, 22, 27, 58, 85, 94, 121, 166, 202, 265, 274, 319, 346, 355, 378, 382, 391, 438, 454, 483, 517, 526, 535, 562, 576, 588, 627, 634, 636, 645, 648, 654, 663, 666, 690, 706, 728, 729, 762, 778, 825, 852, 861, 895, 913, 915, 922, 958, 985, 1086, 1111,1165……
Smith Sayıları’nın keşfinin ar­dından yapılan çalışmalarla bu sayılar arasında başka ilginç özelliklere sahip sayı grupları tanımlanmıştır. Örneğin sa­dece iki asal sayının çarpımı şeklinde ya­zılabilen Smith Sayıları’na “Yarı Asal Smith Sayıları” adı verilmiştir. 
121 sayısı bir yarı asal Smith Sayısı’dır. 121 = 11 x 11 ve 1+2+1 = 1+1+1+1. 
Diğer bir ilginç grup ise Palindromik Smith Sayıları’dır. Bu sayılar baştan ve sondan okundukla­rında aynı değeri veren sayılardır. 666 sayısı hem bir Smith Sayısı’dır.
 (666 = 2x3x3x37) hem Smith sayısı hem de palindromik özelliği bulunmaktadır.

Örnek:  Yukarıda bahsi geçen sayıyı 4937775 sayısını kullanırsak; 
4937775 = 3 * 5 * 5* 65837          
4 + 9 + 3 + 7 + 7 + 7 + 5 = 3 + 5 + 5+ 6 + 5 + 8 + 3 + 7                 
42 = 42  (4937775 bir Smith sayısıdır. )

Peşi sıra gelen Smith sayılarına da  728 ve 729,  2964 ve 2965 gibi sayılara da "smith kardeş sayıları" denir.

Bilgisayar yardımıyla bir sayının Smith sayısı olup olmadığı bulunabilir. Bunun için java kodlama sistemine göre aşağıda verilen kodlama yapılarak bir algoritma oluşturulabilir.


public static boolean Smith(int sayi) {
    int gecici = sayi, i;
    int asal_carpanlar = 0;
  
    for (i = 2; gecici > 1; i++) {
     if (gecici % i == 0) {
      gecici /= i;
      asal_carpanlar += i;
      i--;
     }
    }
    return basamak_toplami(asal_carpanlar) == basamak_toplami(sayi);
   }
   public static int basamak_toplami(int sayi){
    int toplam = 0;
    while (sayi > 0) {
     toplam += sayi % 10;
     sayi /= 10;
    }
    return toplam;
   }

Mutlu Sayılar Nedir?


"Sayının mutlusu, mutsuzu olur mu?" demeyin hemen. oluyor. madem mutlu sayı oluyor, neye göre oluyor? matematiksel açıdan bir açıklaması var tabi bunun. Aslında ciddi bir matematik ifadesi olarak bakılmayabilir duruma ama mutlu sayı ifadesi; özel ve sezgisel durumlar incelenerek geniş yelpazede düşünülmüş ve matematikte son yıllarda ortaya çıkmış yeni bir kavramdır.mutlu sayı; bir pozitif tamsayının rakamlarının karesi alınıp topladığımızda ve bu işlemi bir kaç kere gerçekleştirdiğimizde bu kare toplamları 1'e eşit oluyorsa o sayı mutludur. Eğer 1'e eşit değil ise o sayı mutsuzdur.Mutlu Sayılar kavramı son yıllarda ortaya çıkmış bir konudur. İlk tanımı şu sekilde yapılmıstı: "Bir pozitif tam sayı alalım.Bu sayının rakamlarının karelerini toplayarak yeni bir sayı elde edelim bu sekilde çıkan her yeni sayıya aynı işlemi uygulayalım. Eger çıkan sayılardan 1'e ulaşıyorsak aldığımız sayı mutludur."


Şu ana kadar yapılan çalışmalarda bazı özelliklerin çıkarılması dısında pek fazla ilerleme kaydedilmemistir. Ilk önce yaygın olan tanım genişletilmiş ve yeni kavramlar eklenmiştir. Farklı taban ve üsler kullanildığından birçok genellemeler yapılabilmiştir. Özelden genele dogru kanıtlamalar yapılmıştır. Bu genellemelerle de sezgisel olarak anlaşılabilen özel durumların matematiksel açıklamaları yapılmıştır. Bilgisayar verileri de kullanılarak yeni sonuçlar elde edilmiştir. Çalışmamızın sonuçlarının en önemlileri bütün sayılan belli koşullar altında belirli aralıklara düştügü, birçok genellemenin de bu aralıkta ispatlanabileceğidir. Bu önemli bilgi kullanılarak bizim gösterdiklerimiz dışında daha birçok özellik bulunabilir. Aynca bilgisayar verilerinin de matematiksel sonuçları doğruladığı ve bunun yanında yeni özelliklerin ortaya çikarılmasıyla ilgili ipuçları verdiği görülmüştür.

Bütün sayıların yaklaşık olarak 1/7 si mutludur. insanoğlunun mutluluk oranı ile karşılaştırırsak oldukça iyi durumdalar.

mutlu sayıya örnek olarak;, sayımız 7 olsun.
7 → (7²=49)
49 → (4²+9²=97)
97 → (9²+7²=130)
130 → (1²+3²=10)
10 → 1
.:. 7 sayısı mutlu bir sayıdır.

:::>139 özel bir sayıdır, çünkü hem asal sayıdır hem de mutlu sayıdır.
139 mutludur çünkü 139 sayısının rakamları 1,3 ve 9 ile başlıyoruz
1² + 3² + 9² = 91, 91 sayısının rakamları 9 ve 1 ile devam ediyoruz
9² + 1² = 82, 82 sayısının rakamları 8 ve 2 ile devam ediyoruz
8² + 2² = 68 68 sayısının rakamları 6 ve 8 ile devam ediyoruz
6² + 8² = 100 100 sayısınının rakamları 1,0 ve 0 ile devam ediyoruz
1² + 0² + 0² = 1 son bulduğumuz cevap 1 olduğu için 139 mutlu sayıdır.

:::> bakalım 4 mutlu mu?
4→(4²=16)
16→(1²+6²=37)
37→(3²+7²=58)
58 →(5²+8²=89)
89→(8²+9²=145)
145→(1²+4²+5²=42)
42→(4²+2²=20)
20 →4
.:. 4 sayısı mutsuz bir sayıdır.

:::> 28 de mutlu bir sayıdır.
28→22+82=4+64=68
68→62+82=36+64=100
100→12+02+02=1
.:.28 sayısı mutlu bir sayıdır.

:::> 32 de mutludur.
32→32+22=9+4=13
13→12+32=1+9=10
10→12+02=1+0=1
.:. 32 de mutludur.

19 sayısını ele alalım.
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1
Sizler de başka mutlu sayılar bulabilir misiniz?

Bir sayı mutlu ise 1'e giden yolda elde edilen tum sayilarin da mutlu oldugu rahatca gorulur.. üstüne herhangi bi mutlu sayinin rakamlarinin herhangi bi permutasyonunun da mutlu oldugu farkedilir. (misal 19 mutlu -> 91 de mutlu)..

Buradan aslında "1" e çıkan durumlarda sayılar bile mutlu olabiliyorsa akla şu gelir ki yolu mutlak manada varlığın simgesi olan "BİR"e çıkan insan da tıpkı sayılar gibi mutlu olabilir. Mutlu olmak istiyorsak eğer; bize düşen görev yolumuzu, "BİR"e "BİR" olana, tek olan yaratıcıya ne şekilde olursa olsun yolumuzu çıkarmaktır.

Mutlu sayılar hakkında Javascript kodu ile algoritması da yazılabilir. Aşağıda döngülere göre optimize edilmiş ve edilmemiş algoritmalar verilmiştir. İnceleyebilirsiniz.

optimize olmayan kodlama çözümü

+function isHappyNumber(num) {
  num = num.toString().split('');
  var sum = 0;
for(i=0; i<num.length; i++) {
    sum+= num[i] * num[i];
  }
if(sum==0) {
    return true;
  } else {
    try {
      return isHappyNumber(sum);
    } catch(error) {
      return false;
    }
  }
}(19);

optimize çözüm

var sumArray = [];
+function isHappy(n) {
    n = n.toString().split('');
    var sum = 0;
    for(var i =0; i<n.length; i++)
        sum += +n[i] * +n[i];
if(sum==1) {
        return true;
    } else {
        if(sumArray.indexOf(sum)===-1) {
            sumArray.push(sum);
            return isHappy(sum);
        } else {
            return false;
        }
    }
}(13);

Aşağıdaki Yazılar İlginizi Çekebilir!!!