/* Ċ El Ġgran Ġlib ro Ġde ĠKotlin Ċ ( para Ġprogram adores Ġde Ġback Ġend ) Ċ Ċ Editor ial : ĠMar combo Ġ( https :// www . mar combo . com /) Ċ Autor : ĠL uis ĠCri ado ĠF ern Ã¡n dez Ġ( http :// lu is . cri ado . online /) Ċ Ċ CAP Ãį T UL O Ġ 9 : ĠN Ã ļ MER OS . Ċ Ġ*/ Ċ Ċ package Ġmar combo . l cri ad of . cap itulo 9 Ċ Ċ import Ġjava . lang . Math . sqrt Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant ĊĊ Ċ infix Ġfun ĠDouble . f mod ( other : ĠDouble ): ĠNumber Ġ{ Ġ Ġ// Ġautor ĠMar cin ĠKo zi ÅĦ ski ĊĠĠĠ Ġreturn Ġ(( this Ġ% Ġother ) Ġ+ Ġother ) Ġ% Ġother ĠĠĠĠ Ġ// Ġhttps :// stackoverflow . com / questions / 3 8 0 5 2 0 0 8 / how - to - implement - floor - modulo - for - every - number - type - in - kotlin Ċ } ĊĊ Ċ class Ġpri mo Ġ{ ĊĊĠĠĠ Ġfun Ġf uer za Br uta ( num : Double ): Boolean { ĊĠĠĠĠĠĠĠĠ Ġreturn Ġdivisor Por T ent ativa ( num ) Ġ Ġ// Ġ 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġra iz Cu ad rada ( num : Double ): Boolean { ĊĠĠĠĠĠĠĠ Ġreturn Ġdivisor Por T ent ativa ( num , true ) Ġ Ġ// Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdivisor Por T ent ativa ( numero : Double , ra iz Cu ad rada : Boolean = false ): Boolean { Ġ// Ġ 3 ĊĠĠĠĠĠĠĠ Ġvar Ġnum : Double = sqrt ( numero ) Ġ// Ġ 4 ĊĠĠĠĠĠĠĠ Ġvar Ġpri mo : Boolean = true Ġ Ġ// Ġ 5 ĊĠĠĠĠĠĠĠ Ġvar Ġr ango =( 3 .. ( numero - 1 ). toInt ()). step ( 2 ) Ġ// Ġ 6 ; ĠĠ Ġme Ġqu ed o Ġsolo Ġcon Ġlos Ġimp ares ĊĠĠĠĠĠĠĠ Ġvar Ġmodulo : Double = 0 . 0 Ġ// Ġ 7 ĊĊĠĠĠĠĠĠĠ Ġ// Ġsi Ġes Ġra iz Ġcu ad rada Ġlimit amos Ġel Ġr ango ĊĠĠĠĠĠĠĠ Ġif Ġ( ra iz Cu ad rada ){ Ġ// Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr ango =( 3 .. ( num - 1 ). toInt ()). step ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcomp rob amos Ġsi Ġtiene Ġdiv is ibilidad Ġpar ĊĠĠĠĠĠĠĠ Ġmodulo Ġ= Ġ( numero Ġf mod Ġ 2 . 0 ) Ġas ĠDouble Ġ Ġ// Ġ 9 ; ĠĠ Ġcalcul amos Ġel ĠmÃ³ du lo ĊĠĠĠĠĠĠĠ Ġif Ġ( modulo Ġ== Ġ 0 . 0 ) Ġ{ Ġ Ġ// Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpri mo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġcomp rob amos Ġsi Ġes Ġdiv isible Ġpor Ġalg Ãºn Ġimp ar ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġr ango ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodulo Ġ= Ġ( numero Ġf mod Ġi . toDouble ()) Ġas ĠDouble Ġ Ġ// Ġ 1 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modulo Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpri mo Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak Ġ// Ġ 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// Ġfin Ġde Ġfor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġreturn Ġpri mo ĊĠĠĠ Ġ} Ġ// Ġfin Ġde Ġdivisor Por T ent ativa Ċ Ċ } Ġ// Ġfin Ġde Ġclase ĊĊĊ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġp Ġ= Ġpri mo () ĊĠĠĠ Ġprintln (" Intro du z ca Ġun Ġnumero Ġpara Ġver ificar Ġsi Ġes Ġpri mo : Ġ") ĊĠĠĠ Ġ// Ġ 1 4 0 9 3 0 5 6 8 4 8 5 9 . 0 ; Ġ 1 9 9 6 2 7 7 . 0 p ; Ġ 1 1 5 9 5 2 3 . 0 p ; Ġ 2 3 1 4 7 2 9 0 9 5 8 7 1 . 0 ; Ġ 2 5 4 1 3 7 9 8 . 0 ĊĠĠĠ Ġval Ġn : Double Ġ= Ġread Line ()?. toDouble () Ġas ĠDouble ĊĊĠĠĠ Ġ// Ġf uer za Ġbr uta ĊĠĠĠ Ġvar Ġinicio Ġ= ĠInstant . now () ĊĠĠĠ Ġprintln (" com ien zo : Ġ"+ inicio ) ĊĠĠĠ Ġprintln ( Ġ" Â¿ Es Ġpri mo Ġel ĠnÃºmero Ġ$ n :? Ġ"+ p . f uer za Br uta ( n ) Ġ) ĊĠĠĠ Ġvar Ġfin Ġ= ĠInstant . now () ĊĠĠĠ Ġprintln (" fin : Ġ"+ fin ) ĊĠĠĠ Ġvar Ġtiempo Emp le ado Ġ= ĠDuration . between ( inicio , Ġfin ). to Millis () ĊĠĠĠ Ġprintln (" ti empo Ġemp le ado : Ġ"+ ti empo Emp le ado +" Ġmil ise g und os ") ĊĠĠĠ Ġprintln Ġ(" \ n \ n ") ĊĊĊĠĠĠ Ġ// Ġra iz Ġcu ad rada ĊĠĠĠ Ġinicio Ġ= ĠInstant . now () ĊĠĠĠ Ġprintln (" com ien zo : Ġ"+ inicio ) ĊĠĠĠ Ġprintln (" ra iz Ġcu ad rada Ġde Ġ$ n Ġes Ġ"+ sqrt ( n )) ĊĠĠĠ Ġprintln ( Ġ" Â¿ Es Ġpri mo Ġel ĠnÃºmero Ġ$ n ?: Ġ"+ p . ra iz Cu ad rada ( n ) Ġ) ĊĠĠĠ Ġfin Ġ= ĠInstant . now () ĊĠĠĠ Ġprintln (" fin : Ġ"+ fin ) ĊĠĠĠ Ġtiempo Emp le ado Ġ= ĠDuration . between ( inicio , Ġfin ). to Millis () ĊĠĠĠ Ġprintln (" ti empo Ġemp le ado : Ġ"+ ti empo Emp le ado +" Ġmil ise g und os ") ĊĠĠĠ Ġprintln Ġ(" \ n \ n ") Ċ Ċ }