Calculate N/1 + N/2 + N/3 +n/4 + ... + n/n =?
The first idea is to extract N:
Primitive = N (1+ 1/2 + 1/3 + 1/4 + ... 1/n) = n * (ln (n) + c) C is Euler constant, approx. 0.5772, sample hangs
And then found that this will be added to those that are not divisible by the omitted score, such as 2/3 = 0, but in the above formula is counted, go to the bug again, find extra number on the line
Not realized ...
From the Internet a look, far less difficult!
And then he knocked himself over:
#include <stdio.h> #include <string.h> #include <algorithm>using namespace Std;int main () { long Long T,n; scanf ("%lld", &t); while (t--) { scanf ("%lld", &n); Long long s = 0; Long long ID; For (long long i = 1;i<= n;) { id = n/i; s + = ID; if (n/id = = id) i++; else{ s+= (n/id-i) *id; i = n/id + 1; } } printf ("%lld\n", s); }}
--Number theory----to be complicated by a problem