Jump to content
Science Forums

Deficient & Abundant Number Fun


Turtle

Recommended Posts

The good news is that we've reached 991,000,000.

 

BUT, the even better news is that my Lady is finally back from a loooooong weekend!

 

So I'll be posting the results tomorrow night

Just thought I'd quote Donk in an attempt to temp him back. If he's done with his lady of course.

 

Also noticed the link in my quote last post is dead, so will attempt a fix. Cheery O! :partycheers:

Link to comment
Share on other sites

Tappe (the fellow who wrote the mathgoodies.com article) doesn’t bother to prove the conjecture

2n-s(2n)=1

for all positive intergers n, I guess because he assumes it’s obviously true.

 

While not a neat, formal proof, here’s why it’s obvious to me:

Every power of two 2ncan be written as a binary numeral beginning “1” and followed by n “0”s, and that that number minus 1 is written as a binary numeral consisting of n “1”s.

The proper divisors or 2n are 20, … , 2n-1.

[math]\sum_0^{n-1}[/math] is the same as the value of the binary numeral consisting of n

“1”s.

For example, 28 = 25610 = 1000000002,

28-1 = 111111112.

 

I was about to blurt out that only powers of 2 have interesting abundances, but taking a quick peek at the powers of 3 and their abundances:

3-1=2

9-4=5

27-13=14

81-40=41

...

129140163-64570081=64570082

suggests that

[math]\frac{3^n+1}{3^n-s(3^n)}=2[/math]

is true for all positive integers n

 

Nothing jumps out at me after a quick peek at the powers or 5, but I’m curious if there’s something remarkable about those I’m just not intuiting at a glance, and about the abundances of the powers of all the primes.

Ha ha! Cross posted with you Craig. I had a bite and was still baiting the hook. :lol:

 

So I'm cogitating on your powers of 2 proof, but I thought what I quoted amounted to proof. To whit:

the powers of 2 since the sum of the aliquot parts is 2n-1, or just 1 short of being a perfect number. It follows that any power of 2 is a deficient number.

Also trying to get the jist of your powers of 3 comment & formula, but I'm not getting the aha! that signals grokkage. Any chance you can dumb it down for me?

 

Thanks for joining in and giving me the jostle to start back up. What is wrought? :)

Link to comment
Share on other sites

Craig, I saw you eyeing our little party and wonder how did you miss it in the first place. :xparty: You know it tastes like caaaaannnndy. :hypnodisk:

Sweet, sweet candy!

Any chance Craig that you can edit Donk's long lists into spoilers so it doesn't take so long to load this page?

When we moved to the current forum engine, the code tag’s behavior changed, no longer showing long contents in a small window with a scroll bar to showing all of it. I’ll see if I can find some way to restore its old behavior.

 

... suggests that

[math]\frac{3^n+1}{3^n-s(3^n)}=2[/math]

is true for all positive integers n

 

Nothing jumps out at me after a quick peek at the powers or 5, but I’m curious if there’s something remarkable about those I’m just not intuiting at a glance, and about the abundances of the powers of all the primes.

It just needed a longer peek, and realizing

[math]\frac{3^n+1}{3^n-s(3^n)}=\frac{3^n-1}{3^n-s(3^n)-1}=2[/math]

for this neat general identity to pop out:

[math]\frac{p^n-1}{p^n-s(p^n)-1}=\frac{p-1}{p-2}[/math]

where [math]p[/math] is a prime number greater than 2, [math]s()[/math] the sum-of-proper divisors function, and [math]n[/math] any positive integer.

Link to comment
Share on other sites

Sweet, sweet candy!

When we moved to the current forum engine, the code tag’s behavior changed, no longer showing long contents in a small window with a scroll bar to showing all of it. I’ll see if I can find some way to restore its old behavior.

Roger. If that doesn't pan out I think

 

tags will do it. (Mmmmm...I put the spoiler tags in noparse tags and it didn't work. ?)

 

It just needed a longer peek, and realizing

[math]\frac{3^n+1}{3^n-s(3^n)}=\frac{3^n-1}{3^n-s(3^n)-1}=2[/math]

for this neat general identity to pop out:

[math]\frac{p^n-1}{p^n-s(p^n)-1}=\frac{p-1}{p-2}[/math]

where [math]p[/math] is a prime number greater than 2, [math]s()[/math] the sum-of-proper divisors function, and [math]n[/math] any positive integer.

checking sample...

[math]\frac{p^n-1}{p^n-s(p^n)-1}=\frac{p-1}{p-2}[/math]

 

[math]\frac{11^2-1}{11^2-s(11^2)-1}=\frac{11-1}{11-2}[/math]

 

[math]\frac{121-1}{121-s(121)-1}=\frac{10}{9}[/math]

 

[math]\frac{120}{121-12-1}=\frac{10}{9}[/math]

 

[math]\frac{120}{108}=\frac{10}{9}[/math]

 

Impressive Craig! We can then conclude that all powers of primes are deficient. Whether it's new or you rediscovered it will be a matter for our research. Damn nice result in any regard. :hi:

Addendum: It is known that all powers of primes are deficient.

Deficient numbers @Wolfram

Primes, prime powers, and any divisors of a perfect or deficient number are all deficient.

Can we kabobble any of these factoids into an explanation for why we can find naught but 18 as having an abundance of 3? :ideamaybenot:

 

Edited to correct doofus error by erasure and add addendum by typeage.

 

PS Any idea why the Latex went kaflooey when I edited the post?

Edited by Turtle
Link to comment
Share on other sites

  • 2 weeks later...

So I have been off doing due diligence to no good affect. I have searched high-and-low for any reference to numbers abundant by 3 and found nada. (Other than 18 showing up in ordered lists of the natural numbers.) To try and spur some of our illustrious programmers to that hunt, I attempted to revive my TurboBasic® code this morning and alas TB won't even load on my current version of Windows®. :(

 

So.....Donk, Modest, Craig, Phillip, et al???? Caaaaaannnnndy! :hypnodisk:

Link to comment
Share on other sites

there are no small such number turtle, whether there are any i honestly don't know.

i checked multiplying 2,3,5,7,11,13,17,19,23 up to roughly 10 billion.

Hi phillip. Long time no pester. :D

 

So I don't understand the multiplying and there is 1 small such number abundant by 3. It is 18.

factors: 1 2 3 6 9 18

sum: 1+2+3+6+9=21

21-18=3

 

:turtle:

Link to comment
Share on other sites

alright i redid my algorithm, and 18 is the only one i could find.

x = [1]
for i in range(1,100):
    x += [x[i-1]*2]
for i in range(1,200):
    x += [x[i-1]*3]
    x.sort()
for i in range(1,300):
    x+= [x[i-1]*5]
    x.sort()
for i in range(1,500):
    x+= [x[i-1]*7]
    x.sort()
for i in range(1,700):
    x+= [x[i-1]*11]
    x.sort()
for i in range(1,1000):
    x += [x[i-1]*13]
    x.sort()
for i in range(1,1300):
    x += [x[i-1]*17]
    x.sort()
for i in range(1,1700):
    x += [x[i-1]*19]
    x.sort()
for i in range(1,2100):
    x += [x[i-1]*23]
    x.sort()

def factor(N):
   v = 2
   r = []
   while v*v <= N:
      while N%v == 0:
         r += [v]
         N = N/v
      if v == 2:
         v += 1
      else:
         v += 2
   return r

def total(A,n):
   v = 1
   total = 1
   t = 1
   for i in range(0,len(A)-1):
      if A[i] == A[i+1]:
         v*=A[i]
         t += v
      else:
         v*=A[i]
         t += v
         total *= t
         v = 1
         t = 1
   v*=A[-1]
   t += v
   total *= t
   total -= n
   return total
for i in range(1,len(x)):
    s = factor(x[i])
    if len(s) < 2:
       pass
    else:
       v = total(s,x[i])
       if v == x[i]+3:
          print x[i]
Edited by phillip1882
Link to comment
Share on other sites

alright i redid my algorithm, and 18 is the only one i could find.

x = [1]
for i in range(1,100):
    x += [x[i-1]*2]
for i in range(1,200):
    x += [x[i-1]*3]
    x.sort()
for i in range(1,300):
    x+= [x[i-1]*5]
    x.sort()
for i in range(1,500):
    x+= [x[i-1]*7]
    x.sort()
for i in range(1,700):
    x+= [x[i-1]*11]
    x.sort()
for i in range(1,1000):
    x += [x[i-1]*13]
    x.sort()
for i in range(1,1300):
    x += [x[i-1]*17]
    x.sort()
for i in range(1,1700):
    x += [x[i-1]*19]
    x.sort()
for i in range(1,2100):
    x += [x[i-1]*23]
    x.sort()

def factor(N):
   v = 2
   r = []
   while v*v <= N:
      while N%v == 0:
         r += [v]
         N = N/v
      if v == 2:
         v += 1
      else:
         v += 2
   return r

def total(A,n):
   v = 1
   total = 1
   t = 1
   for i in range(0,len(A)-1):
      if A[i] == A[i+1]:
         v*=A[i]
         t += v
      else:
         v*=A[i]
         t += v
         total *= t
         v = 1
         t = 1
   v*=A[-1]
   t += v
   total *= t
   total -= n
   return total
for i in range(1,len(x)):
    s = factor(x[i])
    if len(s) < 2:
       pass
    else:
       v = total(s,x[i])
       if v == x[i]+3:
          print x[i]
OK. :thumbs_up Is that Python code? How high did you fly? Is there an upper limit to the code? I have been running modified versions of one of your algorithms 24/7 for the last 18 months so time is not an issue for me. Currently > 6*1012 Also, why are you apparently constructing numbers from primes rather than taking the integers in order and factoring them to get a sum for comparison?

 

Inasmuch as there is much ado about quasi-perfect numbers (abundant by 1) and least-deficient numbers (deficient by 1), I am put out that I can't find any ado about abundant by 3.

Link to comment
Share on other sites

so basically what i am doing is the following.

all products of 2. then all products of 2 and 3, or products of 3 by itself.

then all product combinations  2,3,5, 2 and 5, 3,and 5, or 5 by itself. and so on,

this allows me to calculate for large numbers while keeping the number of primes i need to check for small. 
there's several thing's i could do to modify the code. one of them would be to calculate factors for every number no matter how many primes.

this would significantly slow down the code however.

currently I'm storing ever number I'm checking for in an array, which means an upper bound of roughly 10 million numbers to check for.

the largest number I'm checking however is 633825300114114700748351602688.

Link to comment
Share on other sites

so basically what i am doing is the following.

all products of 2. then all products of 2 and 3, or products of 3 by itself.

then all product combinations  2,3,5, 2 and 5, 3,and 5, or 5 by itself. and so on,

this allows me to calculate for large numbers while keeping the number of primes i need to check for small. 

there's several thing's i could do to modify the code. one of them would be to calculate factors for every number no matter how many primes.

this would significantly slow down the code however.

currently I'm storing ever number I'm checking for in an array, which means an upper bound of roughly 10 million numbers to check for.

the largest number I'm checking however is 633825300114114700748351602688.

OK. The problem I see is that you have no way to keep track of ordinality. E.g. we know 18 is the first number abundant by 3, but if you find another you won't know if it's the second, or third, etcetera. While the number-by-number factoring may be slower, it is complete. No one here is in a hurry.
Link to comment
Share on other sites

technically true. I'm "merely" finding the most likely candidates. but if completeness is what you want, here's my code, run it at your own peril.

def factorTotal(N):
   v = 2
   t = 1
   while v*v <= N:
      if N%v ==0:
         t += v
         if v*v != N:
            t += N/v
      v += 1
   return t

n = 2
k = 10000
while True:
   t = factorTotal(n)
   if t == n+3:
      print n
      raw_input()
   elif n%k == 0:
      print n
   n += 1
Edited by phillip1882
Link to comment
Share on other sites

technically true. I'm "merely" finding the most likely candidates. but if completeness is what you want, here's my code, run it at your own peril.

 

def factorTotal(N):

   v = 2

   t = 1

   while v*v <= N:

      if N%v ==0:

         t += v

if v*v != N:

         t += N/v

      v += 1

   return t

 

n = 2

k = 10000

while True:

   t = factorTotal(n)

   if t == n+3:

      print n

      raw_input()

   elif n%k == 0:

      print n

   n += 1

Into the perilous maw I happily go. Python is reporting Syntax Error: invalid syntax for the redded line "print n".
Link to comment
Share on other sites

i decided to write about 40% more time efficient code. it will still be quite slow once you get to the big numbers, but its better than nothing

 

def factor(N):
   v = 2
   k = []
   while v*v <= N:
      while N%v == 0:
         k += [v]
         N = N/v
      if v == 2:
         v += 1
      elif v == 3:
         v += 2
      elif v%6 == 1:
         v += 4
      else:
         v += 2
   if N != 1:
      k += [N]
   return k
def total(A,n):
   v = 1
   total = 1
   t = 1
   for i in range(0,len(A)-1):
      if A[i] == A[i+1]:
         v*=A[i]
         t += v
      else:
         v*=A[i]
         t += v
         total *= t
         v = 1
         t = 1
   v*=A[-1]
   t += v
   total *= t
   total -= n
   return total

n = 2
k = 10000
while True:
   t = factor(n)
   if n == 18:
      print(t)
   if t == 1:
      pass
   else:
      v = total(t,n)
      if v == n+3:
         print(n)
   if n%k == 0:
      print(n)
   n += 1
Link to comment
Share on other sites

i decided to write about 40% more time efficient code. it will still be quite slow once you get to the big numbers, but its better than nothing

def factor(N):
   v = 2
   k = []
   while v*v <= N:
      while N%v == 0:
         k += [v]
         N = N/v
      if v == 2:
         v += 1
      elif v == 3:
         v += 2
      elif v%6 == 1:
         v += 4
      else:
         v += 2
   if N != 1:
      k += [N]
   return k
def total(A,n):
   v = 1
   total = 1
   t = 1
   for i in range(0,len(A)-1):
      if A[i] == A[i+1]:
         v*=A[i]
         t += v
      else:
         v*=A[i]
         t += v
         total *= t
         v = 1
         t = 1
   v*=A[-1]
   t += v
   total *= t
   total -= n
   return total

n = 2
k = 10000
while True:
   t = factor(n)
   if n == 18:
      print(t)
   if t == 1:
      pass
   else:
      v = total(t,n)
      if v == n+3:
         print(n)
   if n%k == 0:
      print(n)
   n += 1
OK No code errors reported by Python this time, but it locked up when the display tried to roll from 90000 to 100000. Not sure why you have it displaying/printing intervals of 10000 as all we need displayed is a hit of abundant by 3.

 

Just like old times, eh? :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...