solved 50
This commit is contained in:
		
							
								
								
									
										37
									
								
								src/bin/problem_50.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/bin/problem_50.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					fn main() {
 | 
				
			||||||
 | 
					    println!("{}", solve())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fn solve() -> usize {
 | 
				
			||||||
 | 
					    let mut primes = vec![];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for n in 2..=1000000 {
 | 
				
			||||||
 | 
					        let prime_check_max = (n as f64).sqrt().ceil() as usize;
 | 
				
			||||||
 | 
					        let mut is_prime = true;
 | 
				
			||||||
 | 
					        for prime in primes.clone() {
 | 
				
			||||||
 | 
					            if n % prime == 0 {
 | 
				
			||||||
 | 
					                is_prime = false;
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            } else if prime > prime_check_max {
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if is_prime {
 | 
				
			||||||
 | 
					            primes.push(n);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let mut chain_length = primes.len() - 1;
 | 
				
			||||||
 | 
					    loop {
 | 
				
			||||||
 | 
					        for prime_window in primes.windows(chain_length) {
 | 
				
			||||||
 | 
					            let sum = prime_window.iter().map(|&prime| prime).sum::<usize>();
 | 
				
			||||||
 | 
					            if primes.contains(&sum) {
 | 
				
			||||||
 | 
					                return sum
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if sum > 1000000 {
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        chain_length -= 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user