Sphere Online Judge

SPOJ Problem Set (classical)

3505. Prime Number Theorem

Problem code: CPRIME

Trong số học, định lư Số Nguyên Tố cho biết sự phân bố tiệm cận của các số nguyên tố. Gọi π(x) là số số nguyên tố không vượt quá x. Định lư Số Nguyên Tố khẳng định:

Bạn hãy viết chương trình xác định xem định lư Số Nguyên Tố có thể dùng để tính xấp xỉ π(x) tốt đến đâu. Cụ thể hơn, với mỗi giá trị x, bạn cần tính sai số phần trăm |π(x) - x/lnx| / π(x) %.

Dữ liệu

Dữ liệu bao gồm nhiều bộ test (không quá 1000). Mỗi bộ test chứa một giá trị x (2 ≤ x ≤ 108) cho trên một dòng. Số 0 kết thúc dữ liệu.

Kết quả

Với mỗi giá trị x, in ra sai số phần trăm của phép xấp xỉ π(x), làm tròn đến một chữ số thập phân.

Ví dụ

Dữ liệu:
10000000
2
3
5
1234567
0

Kết quả
6.6
188.5
36.5
3.6
7.7

Added by:Ngô Minh Đức
Date:2008-12-11
Time limit:20s
Source limit:50000B
Languages:All except: ERL TECS JS
Resource:© VNOI

hide comments
2009-12-17 10:38:11 kalycil
for 5 , it is 2,3,5 , pi(x) =3 , 3 - 5/log(5) = .106*100/3=3.6
2009-07-17 08:39:06 Tony Beta Lambda
As you see, pi(x) ~ x / logx, thus size of your array holding primes could be reduced.
2009-06-22 13:52:53 Daniel Ferizovic
For the sieve I use an array of bool[10^8]
and for the number of primes an array of int[10^8].
But I get a runtime error because of the memory, how to do it using less memory ?

Last edit: 2009-06-22 14:10:00
2009-05-17 09:12:40 Zayakin_Andrey
thanks, i understand
2009-05-16 23:03:11 Dominik Kempa
pi(5)=3
2009-05-16 19:23:27 Zayakin_Andrey
Please help,
lets do example with x=5
pi(x)=1
abs(1-5/(ln5))/1*100=96.9
where is my mistake?
SPOJ System © 2008-2010 Sphere Research Labs. All Rights Reserved.