Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- Generates Pi dots at increasing radius of i.
- Ex. gnuplot to render:
- set terminal jpeg size 1000,1000
- set output 'primepi.jpeg'
- unset xtics
- unset ytics
- unset ztics
- unset key
- unset tics
- unset colorbox
- set xrange[-201:201]
- set yrange[-201:201]
- plot 'primepi.dat' using 1:2 pt 20 ps 0.46 lc -1
- */
- $primes = [];
- $radius = 200;
- $fout = fopen( "primepi.dat", "w" );
- get_prime( $primes, $radius + 1 );
- for( $i = 0; $i <= $radius; $i++ ) {
- $prime = $primes[$i];
- for( $j = 1; $j <= $prime; $j++ ) {
- $y = $i * cos( 2 * M_PI * ( $j/$prime ) );
- $x = $i * sin( 2 * M_PI * ( $j/$prime ) );
- fprintf( $fout, "%5f\t%5f\n", $x, $y );
- }
- }
- function get_prime( Array &$primes, $n )
- {
- ( $n >= 0 ) or die( "Out of range" );
- // Pushes a prime.
- if( ! isset($primes[$n]) ) {
- $count_primes = count($primes);
- while( $count_primes <= $n ) {
- if( $count_primes > 2 ) {
- $c = $primes[$count_primes-1];
- $found_prime = false;
- while( ! $found_prime ) {
- $c += 2;
- $j;
- for( $j = 1; $j < $count_primes; $j++ ) {
- if( $c % $primes[$j] == 0 ) {
- break;
- }
- }
- if( $j == $count_primes ) {
- $found_prime = true;
- }
- }
- $primes[] = $c;
- }
- else {
- $primes = [1,2,3];
- }
- $count_primes = count($primes);
- }
- }
- return $primes[$n];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement