research-pi.rs

1.0 kB · rust · 36 lines

1use mrlycore::errors::Result;2use mrlyfig::{ink, save, Board};3use mrlynum::factor::gcd;4use mrlynum::lattice::coprime_pairs;56const N: usize = 100;78fn main() -> Result<()> {9    let mut board = Board::square();10    let frame = board.frame(0.08);11    let step = frame.w / N as f64;12    let lit = step * 0.52;13    let hid = step * 0.24;14    let mut visible = 0u64;15    for a in 1..=N {16        for b in 1..=N {17            let x = frame.x + (a as f64 - 0.5) * step;18            let y = frame.y + frame.h - (b as f64 - 0.5) * step;19            if gcd(a, b) == 1 {20                visible += 1;21                board.rect(x - lit / 2.0, y - lit / 2.0, lit, lit, ink::yellow());22            } else {23                board.rect(24                    x - hid / 2.0,25                    y - hid / 2.0,26                    hid,27                    hid,28                    ink::fade(ink::dim(), 0.9),29                );30            }31        }32    }33    assert_eq!(visible, coprime_pairs(N));34    save("research-pi", &board)?;35    Ok(())36}