mjau
This commit is contained in:
commit
44ec170681
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
target/
|
||||
.direnv
|
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
|
@ -0,0 +1,7 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "primes"
|
||||
version = "0.1.0"
|
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "primes"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
79
flake.lock
Normal file
79
flake.lock
Normal file
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726560853,
|
||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1719145550,
|
||||
"narHash": "sha256-K0i/coxxTEl30tgt4oALaylQfxqbotTSNb1/+g+mKMQ=",
|
||||
"path": "/nix/store/h5hhc58qp2rcv0f3d9di6569pxrpsi1j-source",
|
||||
"rev": "e4509b3a560c87a8d4cb6f9992b8915abf9e36d8",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"rust-overlay": "rust-overlay"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1728786660,
|
||||
"narHash": "sha256-qY+1e0o6oV5ySlErhj/dsWsPLWjrMKzq4QI7a1t9/Ps=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "174a8d9cec9e2c23877a7b887c52b68ef0421d8b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
36
flake.nix
Normal file
36
flake.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
description = "A bare minimum Rust flake";
|
||||
|
||||
inputs = {
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
|
||||
flake-utils.lib.eachDefaultSystem (sys:
|
||||
let pkgs = import nixpkgs {
|
||||
system = sys;
|
||||
overlays = [ (import rust-overlay) ];
|
||||
};
|
||||
rust = pkgs.rust-bin.stable.latest.default.override {
|
||||
extensions = [ "rust-src" "rust-analyzer" ];
|
||||
};
|
||||
platform = pkgs.makeRustPlatform {
|
||||
rustc = rust;
|
||||
cargo = rust;
|
||||
};
|
||||
in rec {
|
||||
packages.default = platform.buildRustPackage {
|
||||
name = "my-cool-project";
|
||||
src = ./.;
|
||||
cargoLock = { lockFile = ./Cargo.lock; };
|
||||
};
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = [ rust ];
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
57
src/main.rs
Normal file
57
src/main.rs
Normal file
|
@ -0,0 +1,57 @@
|
|||
use std::io;
|
||||
|
||||
fn sqrtu64(x: u64) -> u64 {
|
||||
f64::sqrt(x as f64) as u64 + 1
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut input_line = String::new();
|
||||
io::stdin()
|
||||
.read_line(&mut input_line)
|
||||
.expect("Failed to read line");
|
||||
|
||||
let x: u64 = input_line.trim().parse().expect("Input not an integer");
|
||||
let sqrtx = sqrtu64(x);
|
||||
let mut primes = vec![2,3,5,7];
|
||||
let mut i: u64 = 12;
|
||||
|
||||
while i <= sqrtx {
|
||||
let n = i-1;
|
||||
let m = i+1;
|
||||
let sqrtm = sqrtu64(m);
|
||||
|
||||
let mut nprime = true;
|
||||
let mut mprime = true;
|
||||
|
||||
for prime in &primes {
|
||||
if *prime > sqrtm { break; }
|
||||
if n % prime == 0 {
|
||||
nprime = false;
|
||||
break;
|
||||
}
|
||||
if m % prime == 0 {
|
||||
mprime = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if nprime { primes.push(n) }
|
||||
if mprime { primes.push(m) }
|
||||
|
||||
i+=6;
|
||||
}
|
||||
|
||||
let mut divisors: Vec<u64> = vec![];
|
||||
|
||||
for div in primes {
|
||||
if x % div == 0 {
|
||||
divisors.push(div);
|
||||
}
|
||||
}
|
||||
|
||||
if divisors.len() == 0 {
|
||||
println!("{} is prime!", x);
|
||||
} else {
|
||||
println!("{} has divisors {:?}", x, divisors);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user