Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.
How it works
After setting all of n, k, and j to the input from STDIN, we enter the while loop. Said loop will break as soon as -k - 1 = ~k ≥ 0, i.e., once k ≤ -1 / k < 0.
In each iteration, we first decrement j to consider only proper divisors of n. If j is a divisor of n, n%j yields 0 and j >> n%j*n = j/20 = j gets subtracted from k. However, if j does not divide n, n%j is positive, so n%j*n is at least n > log2 j and j >> n%jn = j / 2n%jnn%j*n = j / 2n%j*n = 0 is subtracted from k.
For abundant numbers, k will reach a negative value before or when j becomes 1, since the sum of n's proper divisors is strictly greater than n. In this case, we break out of the while loop and the program finishes normally.
However, if n is not abundant, j eventually reaches 0. In this case, n%j throws a ZeroDivisionError and the program exits with an error.
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.
How it works
After setting all of n, k, and j to the input from STDIN, we enter the while loop. Said loop will break as soon as -k - 1 = ~k ≥ 0, i.e., once k ≤ -1 / k < 0.
In each iteration, we first decrement j to consider only proper divisors of n. If j is a divisor of n, n%j yields 0 and j >> n%j*n = j/20 = j gets subtracted from k. However, if j does not divide n, n%j is positive, so n%j*n is at least n > log2 j and j >> n%jn = j / 2n%jn = 0 is subtracted from k.
For abundant numbers, k will reach a negative value before or when j becomes 1, since the sum of n's proper divisors is strictly greater than n. In this case, we break out of the while loop and the program finishes normally.
However, if n is not abundant, j eventually reaches 0. In this case, n%j throws a ZeroDivisionError and the program exits with an error.
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.
How it works
After setting all of n, k, and j to the input from STDIN, we enter the while loop. Said loop will break as soon as -k - 1 = ~k ≥ 0, i.e., k ≤ -1 / k < 0.
In each iteration, we first decrement j to consider only proper divisors of n. If j is a divisor of n, n%j yields 0 and j >> n%j*n = j/20 = j gets subtracted from k. However, if j does not divide n, n%j is positive, so n%j*n is at least n > log2 j and j >> n%j*n = j / 2n%j*n = 0 is subtracted from k.
For abundant numbers, k will reach a negative value before or when j becomes 1, since the sum of n's proper divisors is strictly greater than n. In this case, we break out of the while loop and the program finishes normally.
However, if n is not abundant, j eventually reaches 0. In this case, n%j throws a ZeroDivisionError and the program exits with an error.
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit codevia exit code, so 0 is truthy and 1 is falsy.
How it works
After setting all of n, k, and j to the input from STDIN, we enter the while loop. Said loop will break as soon as -k - 1 = ~k ≥ 0, i.e., once k ≤ -1 / k < 0.
In each iteration, we first decrement j to consider only proper divisors of n. If j is a divisor of n, n%j yields 0 and j >> n%j*n = j/20 = j gets subtracted from k. However, if j does not divide n, n%j is positive, so n%j*n is at least n > log2 j and j >> n%jn = j / 2n%jn = 0 is subtracted from k.
For abundant numbers, k will reach a negative value before or when j becomes 1, since the sum of n's proper divisors is strictly greater than n. In this case, we break out of the while loop and the program finishes normally.
However, if n is not abundant, j eventually reaches 0. In this case, n%j throws a ZeroDivisionError and the program exits with an error.
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.
How it works
After setting all of n, k, and j to the input from STDIN, we enter the while loop. Said loop will break as soon as -k - 1 = ~k ≥ 0, i.e., once k ≤ -1 / k < 0.
In each iteration, we first decrement j to consider only proper divisors of n. If j is a divisor of n, n%j yields 0 and j >> n%j*n = j/20 = j gets subtracted from k. However, if j does not divide n, n%j is positive, so n%j*n is at least n > log2 j and j >> n%jn = j / 2n%jn = 0 is subtracted from k.
For abundant numbers, k will reach a negative value before or when j becomes 1, since the sum of n's proper divisors is strictly greater than n. In this case, we break out of the while loop and the program finishes normally.
However, if n is not abundant, j eventually reaches 0. In this case, n%j throws a ZeroDivisionError and the program exits with an error.
Python 2, 41(削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j*(n%j<1)=j>>n%j*n
Output is via exit code, so 0 is successtruthy and 1 is failfalsy.
Try it online! (check the Debug drawer)Try it online!
Python 2, 41 bytes
n=k=j=input()
while~k<0:j-=1;k-=j*(n%j<1)
Output is via exit code, so 0 is success and 1 is fail.
Try it online! (check the Debug drawer)
Python 2, (削除) 41 (削除ここまで) 40 bytes
n=k=j=input()
while~k<0:j-=1;k-=j>>n%j*n
Output is via exit code, so 0 is truthy and 1 is falsy.