• 18-01-2006, 01:53:14
    #1
    konu benimle değil bir arkadaşımla ilgili. aşağıdaki örnek kodlar çalışmıyormuş belkide bilen birinin dokunmasıyla çalışabilirşimdiden teşekkürler..

    Örnek olarak 7331 (4 basamaklı) bir asal sayı. en sağdaki rakamı yani 1'i kesersek geriye 733 kalıyor buda asal sayıdır. yine en sağdaki sayıyı 3'ü kesersek 73 kalır buda asal sayıdır. bundan da en sağdaki sayıyı kesersek yani 3'ü, geriye 7 kalır ki bu da asal sayıdır. bunlara superprime deniyor.
    bizden istenen N basamaklı (yani basamak sayısını bilmiyoruz)bir asal sayının yukarıda ki gibi sağdan kese kese tek basamaklı hale getirirken hepsini bize asal sayı vermesini sağlamak.

    [asal sayı; sadece ve sadece kendine ve 1'e bölünebilen sayılara denir]
    bu soru c programında yazılacakmış c++ da değil.

    ben internette birşeyler buldum ama bu c programında çalışmıyor.
    temel olarak yapısı yardımcı olabilir diye düşündüm.
    İlgilendiğiniz için teşekkür ederim.

    #include <fstream.h>
    #include <math.h>

    long nums[10000];
    int left = 0, right = 4;

    int isprime(long n);

    int main()
    {
    int maxi, maxleft;
    long tenN;

    ifstream infile(" INPUT.TXT");
    ofstream outfile("OUTPUT.TXT");

    infile >> maxi;

    nums[0] = 2;
    nums[1] = 3;
    nums[2] = 5;
    nums[3] = 7;

    for(int index = 1; index < maxi; index++)
    {
    for(maxleft = right; left < maxleft; left++)
    {
    tenN = 10*nums[left];
    if(isprime(tenN + 1)) nums[right++] = tenN + 1;
    if(isprime(tenN + 3)) nums[right++] = tenN + 3;
    if(isprime(tenN + 7)) nums[right++] = tenN + 7;
    if(isprime(tenN + 9)) nums[right++] = tenN + 9;
    if(right >= 9990)
    {
    outfile << "John didn't think he had to make his queue cycle!";
    return 0;
    }
    }
    }

    for(; left < right; left++)
    outfile << nums[left] << endl;

    return 0;
    }

    int isprime(long n)
    {
    int hi = sqrt, i;

    if(n%3==0) return 0; // We already know there are no evens.

    for(i = 5; i < hi; i+=6) // Check for only those numbers not divisible
    if(n%i==0) // by two or three.
    return 0;
    for(i = 7; i < hi; i+=6)
    if(n%i==0)
    return 0;

    return 1;
    }
  • 18-01-2006, 02:18:35
    #2
    Üyeliği durduruldu
    kodlarda bir sorun yok bence.
    Arkadaşın unix tabanlı bir pc de gcc türü bir compiler ilemi derlemeye çalışıyor yoksa?
  • 18-01-2006, 02:58:36
    #3
    #include <fstream.h>
    #include <math.h>

    long nums[10000];
    int left = 0, right = 4;

    int isprime(long n);

    int main()
    {
    int maxi, maxleft;
    long tenN;

    ifstream infile(" INPUT.TXT");
    ofstream outfile("OUTPUT.TXT");

    infile >> maxi;


    nums[0] = 2;
    nums[1] = 3;
    nums[2] = 5;
    nums[3] = 7;

    for(int index = 1; index < maxi; index++)
    {
    for(maxleft = right; left < maxleft; left++)
    {
    tenN = 10*nums[left];
    if(isprime(tenN + 1)) nums[right++] = tenN + 1;
    if(isprime(tenN + 3)) nums[right++] = tenN + 3;
    if(isprime(tenN + 7)) nums[right++] = tenN + 7;
    if(isprime(tenN + 9)) nums[right++] = tenN + 9;
    if(right >= 9990)
    {
    outfile << "John didn't think he had to make his queue cycle!";
    return 0;
    }
    }
    }

    for(; left < right; left++)
    outfile << nums[left] << endl;

    return 0;
    }

    int isprime(long n)
    {
    int hi = sqrt, i;

    if(n%3==0) return 0; // We already know there are no evens.

    for(i = 5; i < hi; i+=6) // Check for only those numbers not divisible
    if(n%i==0) // by two or three.
    return 0;
    for(i = 7; i < hi; i+=6)
    if(n%i==0)
    return 0;

    return 1;
    }

    __________________________________________________ ______________
    Ödev kokusu alıyor burnum

    Yukarda kalın yazıtipi ile işaretlediğim C++'a özel satırları C karşılıkları ile değiştirilirse ve eğer verilmiş olan kod da bu problemi C++'ta doğru çözen bir kod ise sorun çözülmüş olur. Zamanım olsa yapayım ancak yarına proje yetiştiriyorum ben de
  • 18-01-2006, 03:04:36
    #4
    saolun arkadşlar bende diyodum bu C den kimse anlamaz tekrar teşekkürler.

    bu arada belki ödevdir ama benim değil