Skip to main content
Code Review

Return to Question

Commonmark migration
Source Link

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 (1..to+1).filter(|&x| is_prime(x))
 .fold(1f64, |p , x|p * near_pow(to as f64, x as f64)) 
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 (1..to+1).filter(|&x| is_prime(x))
 .fold(1f64, |p , x|p * near_pow(to as f64, x as f64)) 
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 (1..to+1).filter(|&x| is_prime(x))
 .fold(1f64, |p , x|p * near_pow(to as f64, x as f64)) 
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

deleted 1524 characters in body
Source Link
MAG
  • 3k
  • 15
  • 30

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 let fold_op = |p, x|
 { 
 if(1..to+1).filter(|&x| is_prime(x)
 {)
 .fold(1f64, |p , px|p * near_pow(to as f64, x as f64)
 } 
 else { p }
 };
 
 ) (1..to+1).fold(1f64, fold_op)
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 let fold_op = |p, x|
 { 
 if is_prime(x)
 {
 p * near_pow(to as f64, x as f64)
 } 
 else { p }
 };
 
  (1..to+1).fold(1f64, fold_op)
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 (1..to+1).filter(|&x| is_prime(x))
 .fold(1f64, |p , x|p * near_pow(to as f64, x as f64)) 
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

adding euler problem statement into question
Source Link
Barry
  • 18.5k
  • 1
  • 40
  • 92

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Project EulerEuler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 let fold_op = |p, x|
 { 
 if is_prime(x)
 {
 p * near_pow(to as f64, x as f64)
 } 
 else { p }
 };
 
 (1..to+1).fold(1f64, fold_op)
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Project Euler problem 5.

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 let fold_op = |p, x|
 { 
 if is_prime(x)
 {
 p * near_pow(to as f64, x as f64)
 } 
 else { p }
 };
 
 (1..to+1).fold(1f64, fold_op)
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

I am starting to learn Rust and it seems pretty awesome but it's way different than any C based language. I want to know how can I make this code more idiomatic and also how can I improve my solution itself.

Euler problem 5.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

fn near_pow(number:f64, exponent:f64)-> f64
{
 exponent.powf(number.log(exponent).floor())
}
fn is_prime(number:i32) -> bool
{
 use std::ops::Rem;
 
 if number == 2 { return true; }
 if number.rem(2)== 0 { return false; }
 
 let mut i = 3;
 while (i*i) <= number
 {
 if number.rem(i) == 0 {return false;}
 i+= 2;
 }
 true
}
fn euler_problem5(to:i32) -> f64
{
 let fold_op = |p, x|
 { 
 if is_prime(x)
 {
 p * near_pow(to as f64, x as f64)
 } 
 else { p }
 };
 
 (1..to+1).fold(1f64, fold_op)
}
fn main() {
 
 let x = euler_problem5(20);
 println!("{}",x);
 
}

Link to playground

added 8 characters in body
Source Link
MAG
  • 3k
  • 15
  • 30
Loading
minor grammar; euler tag
Source Link
Shepmaster
  • 8.8k
  • 27
  • 28
Loading
Source Link
MAG
  • 3k
  • 15
  • 30
Loading
lang-rust

AltStyle によって変換されたページ (->オリジナル) /