2015-02-19 11 views
5

128 bit UUID dizesi oluşturmak için bir yöntem oluşturdum, şimdi bir asal sayı olup olmadığını kontrol etmek istiyorum. Dizeyi bir int'ye koyamıyorum çünkü çok büyük. Kontrol etmek için nasıl gideceğimi öneren var mı? Daha sonra eğerUUID Dizesi Başlangıcı olup olmadığını kontrol etme

http://www.tutorialspoint.com/java/math/biginteger_isprobableprime.htm

yüksek bir kesinlik parametresi geçerseniz (örneğin 100):

Bu

ben UUID

public static String uuid() 
    { 
     UUID uuid = UUID.randomUUID(); 
     long hi = uuid.getMostSignificantBits(); 
     long lo = uuid.getLeastSignificantBits(); 
     byte[] bytes = ByteBuffer.allocate(16).putLong(hi).putLong(lo).array(); 
     BigInteger big = new BigInteger(bytes); 
     String numericUuid = big.toString().replace('-','1'); // just in case 
     //System.out.println(numericUuid); 
     return(numericUuid); 
    } 
+0

uzun num = big.longValue (); Üzerinde bazı hesaplamalar yapmak istiyorsanız. – SpaceCowboy

+2

Bu garip bir soru. İlkellik için bir "BigInteger" testi [süper kolay], (http://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#isProbablePrime-int-) ama neden umurunda olabilir UUID temel ise? Ben bilmek ölüyorum. – erickson

+0

Uzun süre değiştirdim ama artık 128 bit görünmüyor, bunu düzeltmek için bir öneride bulunabilir misiniz? @ durron597 bir kopya yapmak istemedi ama sanırım sorum farklı – Hayes121

cevap

2

Sen BigInteger en isProbablePrime kullanabilirsiniz oluşturmak için kullanmış koddur Bu gerçek, gerçek bir asal sayı olma olasılığının son derece olasılığına çok yakındır. 0

+0

Çalıştığın cevap için teşekkürler – Hayes121