# Partial Sums of Harmonic Series

Given an positive integer $n$, return an integer $k$ such that the $k$th partial sum of the harmonic series is greater than or equal to $n$. For example, if $n = 2$, then $k = 4$, because $1 + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} = \frac{25}{12} > 2$.

# More Input/Output Examples

```
Input -> Output
1 -> 1
3 -> 11
4 -> 31
```

This is code-golf, so shortest code wins.

[Python 3], 35 bytes …

2mo ago

AppleScript, 178 bytes ``` …

2mo ago

Japt, 11 bytes @§XõpJ x …

2mo ago

[Raku], 27 bytes {+ …

2mo ago

[JavaScript (Node.js)], 47 byt …

2mo ago

Stax, 9 bytes Ç≈f♠É↔X+ö …

2mo ago

## 6 answers

# Raku, 27 bytes

```
{+([\+](1 X/1..*)...*>=$_)}
```

```
{ } # Anonymous code block
[\+]( ) # Get the partial sum of
1 X/ # 1 over each of
1..* # All positive integers
...*>=$_ # Take from the list until it is bigger than the input
+( ) # And return the length of the list
```

This will start to suffer precision issues, but you can add `.FatRat`

to work correctly (but much slower)

#### 1 comment

+1 for FatRat (the link is broken)

# JavaScript (Node.js), 47 bytes

```
f=(a,b=0,c=a=>a&&1/a+c(a-1))=>c(b)<a?f(a,b+1):b
```

For large numbers, a rounding error will occur and yield incorrect result. The solution below works for any integer (no rounding errors):

# 93 bytes

```
f=(a,i=0n,p=a=>g(a)/c(a),g=(a,b=a)=>a&&c(b)/a+g(~-a,b),c=a=>a?a*c(~-a):1n)=>p(i)<a?f(a,-~i):i
```

#### 0 comments

# Japt, 11 bytes

```
@§XõpJ x}aÄ
```

#### 2 comments

Out of curiosity, I've seen this in a few of your other answers now (using shortcuts instead of one character alternatives) - why `Ä`

at the end instead of `1`

?

Sometimes it's a hangover from a previous attempt at a solution, @Quintec, other times it's me trying to keep various tricks fresh in my mind and, occasionally, it's just to show off!

# Python 3, 35 bytes

```
f=lambda x,i=1:x>0and-~f(x-1/i,i+1)
```

Subtracts each `1/i`

in turn from the initial value until the result is no longer positive.

## 0 comments