Semiperfect Number Checker

n = sum of some divisors?

CalculatorsFreeNo Signup
4.3(352 reviews)
All Tools

Loading tool...

About Semiperfect Number Checker

A semiperfect number checker testing if n equals a sum of a subset of its proper divisors. All perfect numbers are semiperfect. All abundant numbers that can be expressed this way are semiperfect. Weird numbers are abundant but NOT semiperfect. Client-side.

Semiperfect Number Checker Features

  • Semiperfect test
  • Subset finder
  • Divisor list
  • Weird check
  • Classification
Semiperfect (pseudoperfect): n can be written as a sum of SOME of its proper divisors. Example: 12=1+2+3+6 or 12=4+2+6. Every perfect number (n=sum of ALL proper divisors) is semiperfect. Abundant but non-semiperfect → 'weird' numbers (70 is the smallest).

How to Use

Enter a number:

  • Test: Semiperfect?
  • Subset: Which divisors sum to n
  • Weird: Abundant but not semiperfect?

Weird Numbers

70 is the smallest weird number: abundant (σ(70)=144>140) but no subset of {1,2,5,7,10,14,35} sums to 70. The next weird numbers: 836, 4030, 5830, 7192, 7912... They're all even — no odd weird numbers are known!

Algorithm

This is a subset sum problem — NP-complete in general, but for the specific case of divisors of n, the number of divisors is O(n^ε), making it tractable for reasonable n using dynamic programming.

Step-by-Step Instructions

  1. 1Enter number.
  2. 2Find divisors.
  3. 3Check subset sum.
  4. 4Show solution.
  5. 5Classify weird.

Semiperfect Number Checker — Frequently Asked Questions

What makes weird numbers special?+

They're abundant (divisor sum > 2n) yet you can't pick a subset of divisors summing exactly to n. The smallest is 70. It's an open question whether any ODD weird numbers exist. All known weird numbers are even.

Are all abundant numbers semiperfect?+

No! That's exactly what weird numbers are: abundant but NOT semiperfect. However, most abundant numbers ARE semiperfect. Weird numbers are quite rare.

How is the subset found?+

Dynamic programming: create a boolean table dp[0..n] tracking achievable sums using subsets of divisors. If dp[n]=true, backtrack to find the subset. Time: O(n × d(n)) where d(n) is the number of divisors.

Share this tool: