pontipati919 Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 selam, başlıkta dediğim gibi bir program yazmak istiyorum. perfect number, bölenlerinin toplamı o sayıya eşit olan sayılar. mesela 6; bölenleri 1,2,3. 1+2+3 = 6 .. diye gidiyorlar(6'nın kendisini bölen olarak almıyoruz) şimdi bu sayılar p asal sayı ise, (2^(p−1)) * (2^p −1) formatında. boldlu kısım asal sayı olmak zorunda. 2^p - 1 formundaki asal sayılara da mersenne sayıları deniyor falan. ben de programda asal sayıların old. bi array tanımladım önce. sonra bu mersenne sayılarını bulup bi arraya koymaya çalıştım(yapamamış olabilirim.) sonuç olarak perfect numberlar mersenne arrayinin elemanları ile ile diğer çarpanın çarpımıdır demem lazım. kod said: #include #include #include using namespace std; double asal(int n) ; int mersenne(int a[],int n) ; int main(int argc, char *argv[]) { double pnumbers[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,47}; const int SIZE = 10; double mersenne[SIZE] ; cout << "how many perfects do you want ? : " ; int n; cin >> n; cout << endl; for (int i = 0 ; i < n ; i++) { if (asal(pow(2,pnumbers[i])-1) == true) mersenne[i] = (pow(2,pnumbers[i])-1)*(pow(2,(pnumbers[i]-1))) ; i = i+1; } cout << " " << endl; for (int i = 0; i cout << mersenne[i] << " " << endl; cout << endl; system("PAUSE"); return EXIT_SUCCESS; } double asal(int n) { // int n; int d=2; // cout << " n? "; cin >>n; bool is_prime = !(n%d==0); if(n==2) is_prime = true; else while( n%d>0 && d<=sqrt(n) ) { d++; if(n%d==0) is_prime = false; } programda mersenne[], mersenne sayılarının arrayi, isprime da bu mersenne sayılarını bulmak için kullandığım asal sayı test fonksiyonu. daha acemiyim beyler yardım plz Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 aldığım uyarı şu " [Warning] passing `double' for converting 1 of `double asal(int)' " Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Kojiroh Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 Kod pek okunmuyo da asal() fonksiyonunun double göndermesi için özel bi sebep yok gibi, onu int döndürecek şekilde değiştirebilirsin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 teşekkür ederim. said: for (int i = 0 ; i < n ; i++) { if (asal(pow(2,pnumbers[i])-1) == true) mersenne[i] = (pow(2,pnumbers[i])-1)*(pow(2,(pnumbers[i]-1))) ; i = i+1; } hala "[Warning] passing `double' for converting 1 of `int asal(int)' " uyarısı alıyorum, boldlu satırda. ha bu arada program çalışıyor gibi, fakat mesela ben ilk 5 perf. sayıyı istediğimde 7.29112e-304 3.39519e-313 6.95089e-308 6.95224e-308 3.266565e-299 sayılarını veriyor. lakin ilk 5'i 6,28,496,8128,33550336 iken. bu sayılar çabuk büyüyor , long falan yetmiyor bi ayar daha lazım :( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 int asal(int) diye tanımlamışsın ama pow(base,exponent) double döndertiyor. dönderttiğin şeyi int'e döndert. bu warning le ilgiliydi tabi sadece. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 tamam, double asal(double n) yaptım. şimdi "invalid operands of types `double' and `int' to binary `operator%' " hatası alıyorum mod kullandığım satırlarda. nasıl düzeltebilirim ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 beyler :( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 nerdeyse bitti son sorum patiler şimdi elimde mersenne[] arrayi var. bundaki asalları seçip yeni bi array oluşturmak istiyorum newmer[] diye. şöyle bişey yazdım, aşağıdaki asal testini kullanarak, hatam nerdedir yardım plx http://oi41.tinypic.com/2ypd9ci.jpg primality test func said: bool IsPrime(unsigned int number) { if (number <= 1) return 0; // zero and one are not prime unsigned int i; for (i=2; i*i<=number; i++) { if (number % i == 0) return false; } return true; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 isPrime(mersenne[i]) heralde. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 code içinde de gözükmediler evet fiz Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 gec kalmisim, nvm Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 ha zaten yapmışsın da çalışmamış ehue, neyi çalışmadı? soyle birsey yapcan aslında j = 0; for (i = 0; i < n; i++) if (isPrime(mersenne[.i.])) newmer[j++] = mersenne[.i.]; [.i.] yi noktasız düşün tabi, italik çıkmasın diye. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 newmer_i 'ler 3, 7, 31, 127, 8, 8191, 131071, 524287, 0, 8192336, .. mersenne_i'ler 3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607, 536870911 .. diye gidiyor lel :D yalnız hala mersenne_i = pow(2,pnumbers_i)-1 ; pnumbers başka bi array satırında " [Warning] converting to `long unsigned int' from `double' " uyarısı var program çalışmasına rağmen Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 cok buyumustur sayilar, double yetmemis. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 tüm arrayler için unsigned long kullandım, ne yapmalıyım? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 type casting yapıp haber veriyor, birşey değil mersenne_i = (unsigned long int)pow(2,pnumbers_i)-1 yap Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 pow yaparken double'a donuyor olusu sorun eger sayilar sacmaliyorsa sacmalamiyorsa aynen cast Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 şurda hala sorun var yaw http://oi41.tinypic.com/2ypd9ci.jpg newmer sacmaliyo :P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 Fly said: pow yaparken double'a donuyor olusu sorun eger sayilar sacmaliyorsa sacmalamiyorsa aynen cast yok abi asıl sorun array muhabbeti, yeni oluşturduğum arrayi dolduramıyorum :P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 isprime false true donebilir, ona gore yeni listeyi dolduruyorsun iterator olarak kullandigin i ise her daim artiyor dolmuyor derken nasil dolmuyor Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 Fly said: isprime false true donebilir, ona gore yeni listeyi dolduruyorsun iterator olarak kullandigin i ise her daim artiyor dolmuyor derken nasil dolmuyor mersenne[.]={3,7,31,127,2047,,,} diye gidiyor. bunun içinden asal olanları alıp newmer[.] = {3,7,31,127,8191,,} tanımlamam gerekiyor. mesela mersenne'de 2047 asal değil, o yüzden onu almıyorum. 2047 den sonra gelen ilk asal olan eleman 8191 miş onu alıyorum. yani böyle tanımlamam gerekiyor newmer'i. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Therru Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 abi önce bi ilkokul bitseydi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 E yazdim onu. Baska index kullancan bewmer icin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
pontipati919 Mesaj tarihi: Mayıs 23, 2013 Konuyu açan Paylaş Mesaj tarihi: Mayıs 23, 2013 denedim abi bunu: j = 0; for (i = 0; i < n; i++) if (isPrime(mersenne[.i.])) newmer[j++] = mersenne[.i.]; Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Mayıs 23, 2013 Paylaş Mesaj tarihi: Mayıs 23, 2013 outputta/compilationda sorun olan ne direk c/p yap Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar