Paskalda proqramlaşdırma

Verilmiş ədədi vuruqlara ayırmaq üçün paskalda proqram yazmalı.xahiş edirəm kömək edin.

Verilmiş cavablar və yazılan şərhlər (14 cavab var)

ahmed (2014-12-14 10:36:36)
Formul yoxdu, demeli yoxlamaq lazımdı. Bütün sade vuruqları. Siz dediyiniz üsullar nezeriyyedi ve praktikada yalnız kiçik ededlere tetbiq oluna bilir. Yoxsa bunun qeyd elediyiniz kimi asan üsulu olsaydı bir ededin sadeliyin sübut elemeye 3 il vaxt lazım olmaz, en sonuncu sade ededi tapana 10 minlerle pul mükafatı teyin olunmazdı. O ki qaldı ededin yarısına,üçde birine v.s. kimi hissesine qeder yoxlamaq O(Cn) = O(n) eger C sabitdiese. Birde ki o ehtimal nezeriyyesi filan qeyd elediyiviz üsullar parçanın bütövüne getmek filan heç biri burda işe yaramır. Bu ededler nezeriyyesidir ve riyaziyyatın heç bir başqa sahesine oxşamır. Burda teklifler sade olur, isbatı da ya olduqca sade olur, ya da onilliklere isbat olunca bilmir.

ahmed (2014-12-13 17:29:31)
Sadeliy, gözelliydi.

marmeladze (2014-12-13 15:51:16)
əzizim, mən erməninin xaçına söymürəm - yuxarıda da yazdım ki, sadə (əsli) ədədləri müəyyənləşdirməyin formulu yoxdu. yəni, sadə ədədlər üçün fibonaççi ardıcıllığı kimi, yaxud cüt/tək ədədlər kimi ümumi bir riyazi göstəriş yoxdu. bunun pis yanı odu ki, ixtiyari n ədədi üçün n-ci sadə ədədi müəyyənləşdirməyin ümumi formulu yoxdu. hansı ki, n-ci natural cüt ədədin, 2(n-1) olduğunu bilirik. lakin bu, əsliliyi müəyyənləşdirmək metodunun yoxluğu demək deyil və dediyiniz metod heç də özünə qədərki bütün ədədləri yoxlamaq formasında olmur, olsa da uğurlu yol deyil. çünki bir ədədin yarısından sonra özünə bölünən cəmi bir vuruğu olur ki, bu da həmin ədədin özüdür. verilən p ədədinin sadəliyini yoxlamağın bir neçə mümkün yolundan biri. ədədin kvadrat kökünün təqribi dəyərinə baxılır. bərayi ehtiyat, kvadrat kökün tam hissəsinin üstünə bir əlavə olunur (c = kök(p) + 1). əgər p həmin ədədə (c) qədərki sadə ədədlərin birinə bölünürsə deməli sadə deyil, əks halda sadədi. rekursiv proqramlaşdırma ilə bunun öhdəsindən asanlıqla gəlmək olur. ədədlər nəzəriyyəsində müəyyən ardıcıllığın göstərişi epistemologiya nöqteyi nəzərindən sintetikdi - parçalardan bütünə getmək. beləliklə biz həmin ardıcıllığa aid istənilən üzvü asanlıqla tapa bilərik. sadəliksə analitikdi. buna görə də, nə mersen göstərişi, nə də fermanın isbatsız teoremi bizə n-ci sadə ədədi tapmağa imkan vermir. birinci 100 min, 1 milyon sadə ədədə baxıb ardıcıllığın reqressiya dəyərini müəyənləşdirmək hələ də mümkün olmadığından sadə ədədlərlə işləməyimiz analitik metodlar üzərində qurulur. xalis riyaziyyatı riyaziyyat eləyən şey, onun apriori və sintetik olmağı və məsələlərin həllinin induksiya yoluyla aparılmağıdır.

Azerbaycan (2014-12-12 23:25:18)
Hmm.. o da düzdü mən isbat eləmiyincə deyə bilmərəm

ahmed (2014-12-12 20:00:30)
Riyaziyyatda "mence" adlı anlayış mövcud deyil.

Azerbaycan (2014-12-12 19:05:42)
Salam zehmet olmasa bu "əgər bir ədəd öz kavadrat kökününü təqribi dəyərinə qədərki sadə ədədlərə bölünmürsə həmin ədəd sadə ədəddi." cumlevize aid bir kicik numune gostererdizde mene

Azerbaycan (2014-12-12 18:59:20)
Tesekkurler melumata gore birde 2-ci cumleviz duz deyil fikiremce,mence her bir ardicilligin sade ededlerin,mueyyen bir artim qaydasi var ve onlarin heresi ucun uygun olan bir xususiyyeti var baxmayaraqki sade ededler ardicilliga oxsamir amma yene mencede bir qaydasi var butun ardicilliqlar mueyyen bir dusturla teyin olunur sadece o dusturlarin coxu tapilmiyib ve her eded ozunde bir sirri saxlayir

ahmed (2014-12-12 09:12:07)
Bəli təəssüf ki ədədin sadəliyini ("sadə" adı məncə uğurlu tərcümə deyil, "xüsusi" daha düzgün olardı) müəyyən edən asan üsul mövcud deyil. Yeganə yol bütün mümkün vuruqları yoxlamaqdı, başqa heç bir yolu yoxdu. Bütün digər üsulların həmişə düzgün nəticə verməsi sübut olunmayıb, onlarla yalnız test xarakterli yoxlamalar aparırlar, uğurlu olduqda yoxlamanı daha da intensivləşdirirlər. Ən cəlbedici üsul bugünə kimi Mersen üsulu hesab olunur, o da bir çox hallarda yanlış nəticə verir. Hal-hazırda Mersen üsulunu təkmilləşdirmək üstündə tədqiqatlar aparılır, ama hələki heç bir nəticə yoxdur. Azərbaycana: Ən son sadə (xüsusi) ədəd 2008 -də tapılıb və 2011 -də sadəliyi isbat olunub, aşağıdakı ədəddir: 2^43112609 - 1 Qeyd 1: Sadə ədədlərə sadə deməynən (uğursuz tərcümə) onların hörməti bir qədər azaldılmış olur. Əslində sadə ədədlər informasiya təhlükəsizliyi nəzəriyyəsinin əsasını təşkil edir. Ədədin sadəliyini müəyyənləşdirmək olduqca çətindir, məhs bunnan kriptoqrafiyada geniş istifadə olunur. Qeyd 2: Sadə ədədlərlə bağlı ətraflı məlumatı Kenneth H. Rosen -in Discrete Mathematics and Its Applications kitabının Number Theory and Cryptography başlığının, Primes and Greatest Common Divisors bölməsindən əldə etmək olar. Discrete Mathematics and Its Applications Kenneth Rosen

marmeladze (2014-12-12 00:40:07)
ahmed bəy, metod mövcud deyil demək sizcə, böyük iddia deyil? bəli, sadə ədədləri göstərəcək müəyyən bir formul yoxdu, amma bu o demək deyil ki, sadəliyi təyin eləyəcək metod yoxdu. əgər bir ədəd öz kavadrat kökününü təqribi dəyərinə qədərki sadə ədədlərə bölünmürsə həmin ədəd sadə ədəddi. yaxud, bütün 2 və 3 istisna olmaqla bütün ədədlər 6k+1, 6k-1 şəklində göstərilə bilərlər. yuxarıdakı yazıda qeyd elədiyim axtarış sözləri əsasında araşdırma aparın. qarşınıza onlarca əsliliyi yoxlama metodları çıxacaq; hansı ki, bəzilərini həmin yazıda qeyd eləmişəm.

Azerbaycan (2014-12-11 18:15:47)
Salam Əhməd bəy, yadınızdadırsa deyə bilərsiz neçəydi o ədəd? Maraqlı gəldi sadəcə

ahmed (2014-12-11 13:50:13)
Ededin sadeliyini deqiq müeyyen eden heç bir metod mövcud deyil. Yegane yol bütün vuruqları yoxlamaqdır. Sehv elemiremse sonuncu en böyük sade eded 2013-de tapılmışdı.

marmeladze (2014-12-11 04:51:23)
vuruqları tapmağın məsləhətli yollarından biri, ədədi əvvəlcə sadə vuruqlarına ayırmaq, daha sonraysa bu vuruqların kombinasiyalarını müəyyənləşdirməkdi. verilən a ədədi a1, a2, .. an sadə ədədlərinin hasili şəklində göstərilə bilirsə, deməli həm bu a1, a2 .. an həm də, müxtəlif ai1*ai2*...*ain (1<=i<=n) ədədləri a-nın vuruqlarıdı. proqramlaşdırmanın məsləhətli praktikalarından biri müəyyən işi mümkün ola bilən ən kiçik işlərə bölüb, həmin işləri ayrılıqda görməkdi. belədə yazdığınız kod həm oxunaqlı olur, həm (varsa) səhvləri tapmaq daha asan olur və sairə, və ilaxır. əgər sadə vuruqları tapmalıyıqsa, deməli əvvəlcə sadə ədədləri müəyyənləşdirməliyik. ümid edirəm ki, sadə ədədlərlə bağlı müəyyən qədər anlayışınız var. axtarış motorlarının birində əsliliyin yoxlanılması (test prostotı/primality test) metodlarını araşdırın. onlarca metod çıxacaq qarşınıza. eratosfen xəlbiri, sınaq bölgüsü, fermanın kiçik teoremi, poklinqton testi ... bunlardan birini seçin və buna əsasən əsliliyi (sadəlik) müəyyənləşdirən bir funksiya/modul ( sadə_ədəd(p) ) yazın. əgər ədəd sadədirsə funksiya true, deyilsə false nəticəsini versin. daha sonra verilən (x) ədədin sadə vuruqlarını tapmağa çalışın. [code]sadə_vuruqlar_massivi = [] p = 1 funksiya sadə_vuruqları_tapmaq: <strong>əgər</strong> x p modulunda sıfıra bərabərdirsə <strong>və əgər</strong>sadə_ədəd(p) düzdürsə p-ni massivə əlavə et p-ni x-ə qədər bir-bir artır.[/code] beləcə həmin ədədin sadə vuruqlarını da tapmış olursunuz. daha sonra sadə_vuruqlar_massivi-ndə iterasiya aparın. massivin birinci elementi p1, sonuncusu pn olsun. [code] i, j k ilə iterasiya aparın. aşağıdakı vuruqlar x-ə qalıqsız bölünürsə və massivdə yoxdursa (burda əlbəttə ki, birinci dərəcədən hasilləri ümumiyyətlə iterasiyaya qatmamaq olar) massivə əlavə eləyin. p1^0*p2^0* ... * pn^0 p1^0*p2^0* ... * pn^1 ... p1^i*p2^j* ... * pn^k burda, i, j, k ədədi qüvvələrdi. [/code] məsələ uzun kimi görünsə də, təxminən 10-12 sətirlə həll eləmək olur. əlbəttə ki, burdakı resepti tətbiq eləmək məcburiyyətində deyilsiz; lakin bu yolu seçməklə, "parçala və hökmranlıq elə" prinsipini də qavramaq imkanının əldə eləyəcəksiz.

ahmed (2014-12-10 23:25:09)
Mene ele gelir hazır kod yazmağdansa psevdokod ve ya alqoritm yazmaq daha düzgündür.

Mehman Elxanoglu (2014-12-10 21:49:16)
Hər halda Sizə sadə vuruqlara ayırma lazımdır. [code] program Vuruqlara_ayirma; var i,a,b:Int64; begin write('a = '); readln(a); i:=2; b:=a; while (i>1) and (i