@@ -60,7 +60,7 @@ This also provides a few functions unconnected to `PrimeSet`, which will be fast
60
60
case, but slower in the long term as they do not use any caching of primes.
61
61
62
62
*/
63
- #![ feature( step_by, test ) ]
63
+ #![ feature( step_by) ]
64
64
#![ doc( html_root_url = "https://wackywendell.github.io/primes/" ) ]
65
65
66
66
#[ warn( non_camel_case_types) ]
@@ -69,15 +69,10 @@ case, but slower in the long term as they do not use any caching of primes.
69
69
#[ warn( non_upper_case_globals) ]
70
70
#[ warn( missing_docs) ]
71
71
72
- extern crate test;
73
-
74
72
use std:: ops:: Index ;
75
73
use std:: slice;
76
74
use std:: cmp:: Ordering :: { Equal , Less , Greater } ;
77
75
78
- #[ cfg( test) ]
79
- use test:: Bencher ;
80
-
81
76
/** A prime generator, using the Sieve of Eratosthenes.
82
77
83
78
Create with `let mut pset = PrimeSet::new()`, and then use `pset.iter()` to iterate over all primes.
@@ -298,133 +293,3 @@ pub fn is_prime(n : u64) -> bool {
298
293
if n <= 1 { return false ; }
299
294
firstfac ( n) == n
300
295
}
301
-
302
- #[ test]
303
- fn test_iter ( ) {
304
- let mut pset = PrimeSet :: new ( ) ;
305
- let first_few = [ 2u64 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 ] ;
306
- for ( m, & n) in pset. iter ( ) . zip ( first_few. iter ( ) ) {
307
- assert_eq ! ( m, n) ;
308
- }
309
- }
310
-
311
- #[ test]
312
- fn test_find ( ) {
313
- let mut pset = PrimeSet :: new ( ) ;
314
-
315
- // pset is empty, so it needs to generate the primes
316
- assert_eq ! ( pset. find_vec( 1000 ) , None ) ;
317
-
318
- let ( ix_exp, n_exp) = ( 168 , 1009 ) ;
319
-
320
- assert_eq ! ( pset. find( 1000 ) , ( ix_exp, n_exp) ) ;
321
- assert_eq ! ( pset. find( n_exp) , ( ix_exp, n_exp) ) ;
322
-
323
- // We shouldn't have gone beyond 1009
324
- {
325
- let plst = pset. list ( ) ;
326
- let plen = plst. len ( ) ;
327
- assert_eq ! ( plen, ix_exp+1 ) ;
328
-
329
- assert_eq ! ( plst[ plen-1 ] , n_exp) ;
330
- }
331
-
332
- assert_eq ! ( pset. find_vec( n_exp) , Some ( ( ix_exp, n_exp) ) ) ;
333
- }
334
-
335
- #[ test]
336
- fn test_primes ( ) {
337
- let mut pset = PrimeSet :: new ( ) ;
338
-
339
- // note: some are repeated, because the pset list grows as it goes
340
-
341
- assert ! ( !pset. is_prime( 1 ) ) ;
342
- assert ! ( !is_prime( 1 ) ) ;
343
- assert ! ( pset. is_prime( 2 ) ) ;
344
- assert ! ( is_prime( 2 ) ) ;
345
- assert ! ( pset. is_prime( 13 ) ) ;
346
- assert ! ( is_prime( 13 ) ) ;
347
- assert ! ( !pset. is_prime( 45 ) ) ;
348
- assert ! ( !is_prime( 45 ) ) ;
349
- assert ! ( !pset. is_prime( 13 * 13 ) ) ;
350
- assert ! ( !is_prime( 13 * 13 ) ) ;
351
- assert ! ( pset. is_prime( 13 ) ) ;
352
- assert ! ( pset. is_prime( 7 ) ) ;
353
- assert ! ( is_prime( 7 ) ) ;
354
- assert ! ( !pset. is_prime( 9 ) ) ;
355
- assert ! ( !is_prime( 9 ) ) ;
356
- assert ! ( pset. is_prime( 5 ) ) ;
357
- assert ! ( is_prime( 5 ) ) ;
358
-
359
- assert ! ( pset. is_prime( 954377 ) ) ;
360
- assert ! ( pset. is_prime( 954379 ) ) ;
361
- assert ! ( !pset. is_prime( 954377 * 954379 ) ) ;
362
-
363
- assert ! ( !is_prime( 18409199 * 18409201 ) ) ;
364
- assert ! ( pset. is_prime( 18409199 ) ) ;
365
- assert ! ( pset. is_prime( 18409201 ) ) ;
366
-
367
- assert ! ( !pset. is_prime( 2147483643 ) ) ;
368
- assert ! ( pset. is_prime( 2147483647 ) ) ;
369
- assert ! ( !pset. is_prime( 2147483649 ) ) ;
370
- assert ! ( !pset. is_prime( 63061493 ) ) ;
371
- assert ! ( !pset. is_prime( 63061491 ) ) ;
372
- assert ! ( pset. is_prime( 63061489 ) ) ;
373
- assert ! ( !pset. is_prime( 63061487 ) ) ;
374
- assert ! ( !pset. is_prime( 63061485 ) ) ;
375
- assert ! ( pset. is_prime( 2147483647 ) ) ;
376
- assert ! ( pset. is_prime( 63061489 ) ) ;
377
- assert ! ( !is_prime( 63061489 * 2147483647 ) ) ;
378
- assert ! ( !is_prime( 63061489 * 63061489 ) ) ;
379
- // assert!(!is_prime(2147483647 * 2147483647)); // Runs very long
380
- }
381
-
382
- #[ test]
383
- fn test_factors ( ) {
384
- let mut pset = PrimeSet :: new ( ) ;
385
-
386
- let ns = [ ( 1 , vec ! ( ) ) ,
387
- ( 2 , vec ! ( 2 ) ) ,
388
- ( 3 , vec ! ( 3 ) ) ,
389
- ( 4 , vec ! ( 2 , 2 ) ) ,
390
- ( 5 , vec ! ( 5 ) ) ,
391
- ( 6 , vec ! ( 2 , 3 ) ) ,
392
- ( 9 , vec ! ( 3 , 3 ) ) ,
393
- ( 12 , vec ! ( 2 , 2 , 3 ) ) ,
394
- ( 121 , vec ! ( 11 , 11 ) ) ,
395
- ( 144 , vec ! ( 2 , 2 , 2 , 2 , 3 , 3 ) ) ,
396
- ( 10_000_000 , vec ! ( 2 , 2 , 2 , 2 , 2 , 2 , 2 , 5 , 5 , 5 , 5 , 5 , 5 , 5 ) ) ,
397
- ( 100 , vec ! ( 2 , 2 , 5 , 5 ) ) ,
398
- ( 121 , vec ! ( 11 , 11 ) ) ,
399
- ] ;
400
-
401
- // Test unique factors
402
- for & ( n, ref v) in ns. iter ( ) {
403
- println ! ( "{}: {:?}" , n, v) ;
404
- assert_eq ! ( pset. prime_factors( n) , * v) ;
405
- assert_eq ! ( factors( n) , * v) ;
406
-
407
- let unique_factors = factors_uniq ( n) ;
408
-
409
- // Get unique factors from the lists we made above
410
- let mut unique_factors_exp : Vec < u64 > = v. iter ( ) . map ( |& x| { x} ) . collect ( ) ;
411
- unique_factors_exp. dedup ( ) ;
412
-
413
- assert_eq ! ( unique_factors, unique_factors_exp) ;
414
- }
415
-
416
- pset = PrimeSet :: new ( ) ;
417
- assert_eq ! ( pset. prime_factors( 12 ) , vec!( 2 , 2 , 3 ) ) ;
418
-
419
- }
420
-
421
-
422
- #[ bench]
423
- fn bench_primes ( b : & mut Bencher ) {
424
- b. iter ( || {
425
- let mut pset = PrimeSet :: new ( ) ;
426
- let ( _, _) = pset. find ( 1_000_000 ) ;
427
- //~ let (idx, n) = pset.find(1_000_000);
428
- //~ println!("Prime {}: {}", idx, n);
429
- } )
430
- }
0 commit comments