[Algoritma] 10,001. Asal Sayı?

+1 oy
27 Nisan 2015 basillus Uzman (6,060 puan)   sordu

Asal sayılar yalnızca kendisine ve 1'e bölünebilen sayılardır.

Sırasıyla : 2, 3, 5, 7, 11, 13 ... şeklinde gitmektedir.

1. sırada 2'yi,

2. sırada 3'ü görüyoruz.

Bu şekilde uzayıp giden asal sayılardan 10001. (on bin birinci) Asal Sayıyı en kısa sürede bulan programı yazınız. En iyi cevap en kısa sürede bulanındır.

BİTİŞ: 29 Nisan Çarşamba

5 Cevap

+3 oy
28 Nisan 2015 celalbaydar Stajyer (900 puan)   cevapladı
30 Nisan 2015 basillus seçti
 
En İyi Cevap
public class Soru {

    public static void main(String[] args) {
        int asalCounter = 1;
        int i = 1;
        do {
            i++;
            if (asalMi(i)) {
                asalCounter++;
            }

        } while (asalCounter < 10001);
        System.out.println(i + " " + asalCounter);
    }

    public static boolean asalMi(int sayi) {
        boolean asalMi = true;
        int kok = (int) Math.sqrt(sayi);
        if (sayi % 2 == 0) {
            return false;
        }
        for (int i = 3; i <= kok; i += 2) {
            if (sayi % i == 0) {
                return false;
            }
        }
        return true;
    }
}
28 Nisan 2015 basillus Uzman (6,060 puan)   yorumladı
3 Kere çalıştırdım ortalama nano saniye değeri :

18 430 787
0 oy
27 Nisan 2015 salihsamet Stajyer (660 puan)   cevapladı
//JAVA


import java.util.ArrayList;
import java.util.Scanner;

public class Asal {
   
    public boolean AsalMi(int sayi){
        if(sayi==2)
            return true;
        else if(sayi==1)
            return false;
        else{
            for (int i = 2; i <= Math.sqrt(sayi); i++) {
                if(sayi%i==0 && i!=sayi)
                    return false;
            }
            return true;
        }
    }

    public static void main(String[] args) {
        System.out.println("Kacinci asal sayi bulunsun?");
        Scanner k = new Scanner(System.in);
        int sayi = k.nextInt();
        int sayac=0;
        int asalsayi=2;
        Asal asal = new Asal();
        ArrayList a = new ArrayList();
        while(sayac!=sayi){
            if(asal.AsalMi(asalsayi)){
                sayac++;
                a.add(asalsayi);
            }
            asalsayi++;
        }
        System.out.println(a.get(sayi-1));
    }
}
27 Nisan 2015 basillus Uzman (6,060 puan)   yorumladı
27 Nisan 2015 basillus düzenledi
3 Kere çalıştırdım ortalama nano saniye değeri :

32 931 233
+1 oy
27 Nisan 2015 cynapsis Stajyer (560 puan)   cevapladı
// JAVA

public class Soru {
    public static void main(String[] args) {
        int asalCounter=1;
        int i = 3;
        while(asalCounter<10001) {
            if(asalMi(i)) {
                asalCounter++;
            }
            i++;
        }
        System.out.println(--i + " " + asalCounter);
    }
    
    public static boolean asalMi(int sayi) {
        boolean asalMi=true;
        int kok =(int) Math.sqrt(sayi);
        for (int i = 2; i <= kok; i++) {
            if(sayi%i==0) {
                asalMi=false;
                break;
            }
        }
        return asalMi;
    }
}
27 Nisan 2015 basillus Uzman (6,060 puan)   yorumladı
27 Nisan 2015 basillus düzenledi
3 Kere çalıştırdım ortalama nano saniye değeri :

28 401 677 nanosaniye

[Edit : 3 'den başlatmışsınız onu 2 den başlatıp tekrar test ettim.]
0 oy
29 Nisan 2015 sugarsweetmore Uzman Yardımcısı (1,120 puan)   cevapladı
import java.math.BigInteger;
public class Asal {
    public static void main(String[] args) {
        int n = 10001;
        BigInteger asal = BigInteger.valueOf(0);
        for (int i = 0; i < n; i++) {
            asal = asal.nextProbablePrime();
        }
        System.out.println("10001. asal = " + asal.intValue());
    }
}
29 Nisan 2015 basillus Uzman (6,060 puan)   yorumladı
3 Kere çalıştırdım ortalama nano saniye süresi:

1 208 884 346
0 oy
30 Nisan 2015 vectoral Stajyer (620 puan)   cevapladı
package snippet;
import java.util.Scanner;
public class Eratosthenes {
public static void main(String args[]){
int i,j,k = 0;int n_up;
int c[]=new int [90000000];int p[]=new int[1000000];int d[]=new int[10000000];
Scanner in=new Scanner(System.in);
int y=10000;
n_up=1001;
int n=10000000;
int min=-5;
if(min<0)min=1;
if(min==0)min=min+1;
int max=1000001;
for(i=min;i<max+1;i++)
{
 boolean bool = false;

if(i==1)i++;
for(j=2;j<i;j++)
{

if(i%j==0){bool=true;
if(i==2)break;
break; }
if(bool==true)
{
 i++;
}
}
if(bool==false)
{
 n++;
 System.out.println(i+" is a Prime "); p[i]=i;
 if(n==k)
 {
 System.out.println(" The Prime "+n+ " th Prime is :"+i);
 break;
 }
}
}
for(i=0;i<y;i++)p[i]=0;
p[1]=2;
for(int i1=0;i1<y;i1++)
{
c[i1]=i1;
}
int n2=1;
while(n2<n_up){
 for(int i2=p[1];i2<y;i2++)
 {
 if(c[i2*p[n2]]==i2*p[n2])
 {
  c[i2*p[n2]]=0;
 }
 }
for(int j1=p[n2]+1;j1<y;j1++){
 if(c[j1]!=0)
 {
  n2++;
  p[n2]=c[j1];
 int z=c[j1];
break;
 }
}
}
Goldbach(p);
}
 
 
 public static void Goldbach(int[] p)
 {
  int k,ttl,i,j;
  k=4;
  for( i=1;i<p.length;i++){
  for(j=1;j<p.length;j++){
  ttl=p[i]+p[j];
  if(k<=1000001){
  if(k==ttl){
  System.out.println(k+" = " +p[i]+" + "+p[j]);
   i=1;j=1;
   k+=2;
   if(k==1000002)System.exit(0);
  }
  }
  }
  }
  }
}
30 Nisan 2015 basillus Uzman (6,060 puan)   yorumladı
Üzgünüm yarışma çarşamba günü bittiğinde bitti.
...