提出したので

Java版と素直にCで書いた高速版を公開。

package montecalro;

import java.io.*;

public class Main {
	public static void main(String[] args){
		new Montecalro().start();
	}	
}

class Montecalro{
	static final int RADIUS = 29 * 10;
	static final int DIAMETER = RADIUS * 2;
	int circle;
	int dots;
	double x,y;
	double distance;
	
	void start(){
		while(true){
			init();
			if(dots<=0){
				System.out.println("====終了====");
				return;
			}
			calc();
		}
	}
	
	void init(){

		circle = 0;
		boolean loop = true;
		System.out.println("点の数を入力してください(非正整数の入力で終了)");
		BufferedReader br =
			new BufferedReader(new InputStreamReader(System.in));
		
		while(loop){
			loop = false;
			try {
				dots = Integer.parseInt(br.readLine());
			} catch (NumberFormatException e) {
				System.out.println("数値を入力してください");
				loop = true;
			} catch (IOException e) {
				System.out.println("エラーが発生しました");
				e.printStackTrace();
				System.exit(1);
			}
		}
	}
	
	void calc(){
		
		for(int i=0;i<dots;i++){
			x = Math.random() * RADIUS;
			y = Math.random() * RADIUS;
			if(distance()<RADIUS){ circle++; }
		}
		
		System.out.println("理論値 : " + RADIUS * RADIUS *Math.PI);
		System.out.println("結果   : "
				+ (double)(DIAMETER * DIAMETER) * ((double)circle / (double)dots));
	}
	
	double distance(){
		return Math.sqrt(x*x + y*y);
	}
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

#define RADIUS 290
#define DIAMETER (RADIUS*2)

int main(void){
	int i;
	int circle;
	int dots;
	char temp[20];
	double x,y;
	
	srand((unsigned)time(NULL));
	
	while(1){
		circle = 0;
		puts("点の数を入力");
		scanf("%s",temp);
		dots = atoi(temp);
		if(dots<=0)break;
		
		for(i=0;i<dots;i++){
			x = (double)rand()/RAND_MAX * RADIUS;
			y = (double)rand()/RAND_MAX * RADIUS;
			if(x*x+y*y<RADIUS*RADIUS)circle++;
		}
		printf("理論値=%f\n",RADIUS*RADIUS*M_PI);
		printf("結果  =%f\n",DIAMETER*DIAMETER*((double)circle/dots));
	}
	puts("====終了====");
	return EXIT_SUCCESS;
}