Jawa / Говнокод #3495 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
public static boolean isPow(BigInteger n){
				    
	   boolean zusammengesetzt=false;
	   BigInteger obereSchranke=n;
	   BigInteger untereSchranke=BigInteger.ONE;
	   BigInteger t;	
               
	   for(BigInteger i=BigInteger.ONE;(i.compareTo(new BigInteger(new Integer((n.bitLength())).toString())) < 0);i=i.add(BigInteger.ONE)){
	      while( (obereSchranke.subtract(untereSchranke)).compareTo(BigInteger.ONE) > 0){
		     t=((obereSchranke.add(untereSchranke)).divide(new BigInteger("2")));
		     if((pow(t,i.add(BigInteger.ONE))).compareTo(n) == 0){
		        UserInterface.ausgabeFeld.append("Abbruch Schritt 1: Eingegebene Zahl ist nicht prim, da ");
			    UserInterface.ausgabeFeld.append("n = "+t+"^"+i.add(BigInteger.ONE)+"\n"+"\n"); 
				UserInterface.ausgabeFeld.repaint();
				return zusammengesetzt=true;
			    } 
		     if((pow(t,i.add(BigInteger.ONE))).compareTo(n) > 0)
			    obereSchranke=t;
		     if((pow(t,i.add(BigInteger.ONE))).compareTo(n) < 0)
				untereSchranke=t;
		  }  
       }    
	   UserInterface.ausgabeFeld.append("Schritt 1: "+n+" ist keine echte Potenz!"+"\n");
	   UserInterface.ausgabeFeld.repaint();
	   return zusammengesetzt;  
	}

Проверка условия вида "n = a^b".
Впечатляет условие цикла for и реализация арифметических операций (хотя, может, с BigInteger так и надо).

Запостил: WxD WxD, (Updated )

Комментарии (8) RSS

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8