use std::thread; static mut nextnum : u64 = 2; const max : usize = 20; static mut pcount : usize = 0; static mut primes : [u64; max] = [0; max]; fn prime_thread() { unsafe { let mut num : u64; let mut idx : usize; while pcount < max { num = nextnum; nextnum += 1; let mut prime : bool = true; idx = 0; while idx < pcount && primes[idx] * primes[idx] <= num { if 0 == (num % primes[idx]) { prime = false; break; } idx += 1; } if prime && pcount < max { primes[pcount] = num; pcount += 1; } } } } fn main() { // let threads = 1; let handle = thread::spawn(prime_thread); handle.join().unwrap(); unsafe { for n in primes { println!("{n}"); } } /* for(uint64_t i = 0; i < pcount; i++) printf("%lu\n", primes[i]); return 0; */ /* printf("Middle 25 primes:\n"); for(uint64_t i = pcount/2; i < pcount/2 + 25; i++) printf("%lu\n", primes[i]); printf("Last 25 primes:\n"); for(uint64_t i = pcount - 25; i < pcount; i++) printf("%lu\n", primes[i]); printf("Final pcount: %lu\n", pcount); for(uint64_t i = 0; i < pcount - 1; i++) if(primes[i] == primes[i+1]) printf("Error: Duplicate prime recorded at index %d and %d\n", i, i); for(uint64_t i = 0; i < pcount - 1; i++) if(primes[i] > primes[i+1]) printf("Note: Out of order primes %lu and %lu\n", primes[i], primes[i+1]); */ }