![]() |
![]() |
#1607 |
"Rich"
Aug 2002
Benicia, California
17×71 Posts |
![]() |
![]() |
![]() |
![]() |
#1608 |
Sep 2009
111110100102 Posts |
![]()
I've had a couple of systems working on C83s etc for a few months. They check if a number is done immediately before starting work on it so real collisions causing wasted work are rare. Carry on by all means.
But right now one is busy trying to clear C70-79. So even less likely to collide. Or you could work on 80-82 digits. Or a higher range such as c90 (someone else is working on C89). Chris |
![]() |
![]() |
![]() |
#1609 |
May 2019
Rome, Italy
5×7 Posts |
![]()
I wanted to work on those composites too, but my system is quite slow so i was thinking about looking for factors up to 15-25 digits, depending on the sizes, to get the low-hanging fruits.
I've found that about one third of the composites (i tried sampling from 80 to 120 digits, skipping by 10 each time) has a factor up to 25 digits, and around 3% has one up to 15 digits. Is that a sensible approach? Or would i be better off SIQSing them all, even if that would factor less composites per hour? |
![]() |
![]() |
![]() |
#1610 | |
"Rich"
Aug 2002
Benicia, California
100101101112 Posts |
![]() Quote:
|
|
![]() |
![]() |
![]() |
#1611 |
"Ed Hall"
Dec 2009
Adirondack Mtns
70418 Posts |
![]()
If someone is interested in doing some light ECM only, I have a Python3 script that does just that. In fact, I have the script running in four threads on an rPi that won't run YAFU. It basically grabs a composite and runs a few curves at some levels. For those composites that fail to produce factors, you are causing extra ECM effort when the composite is run later, but if you leave the level set to 3 or less, that's not too much extra and that extra still might hit a lucky catch. Last time I checked my rPi, it seemed to be running at about a 50% success rate.
There is no dupolication checking, so the more you run it in a particular region (offset), the lower the success rate. You may wish to change the values if the success rate is low. Here's the Python code: Code:
#!/bin/python3/ compNum = 100 # Number of composites to run compSize = 83 # Size of composites to run ranNum = 100 # Number for random count offset = 15000 # offsets random choice into the chosen size level = 3 # Level to run ( 1 = 11e2, 2 = 11e3, 3 = 11e4, 4 = 43e4, 5+ = 11e5 ) import os import random import subprocess import time import urllib.request #reports factors to factordb def send2db(composite, factors): factorline = str(factors) sendline = 'report=' + str(composite) + '%3D' + factorline dbcall = sendline.encode('utf-8') temp2 = urllib.request.urlopen('http://factordb.com/report.php', dbcall) #processes factorT to see if factors were returned from GMP-ECM def factorStr(factorT): factors = str(factorT) ind = factors.rfind("stdout") ind += 9 factors = factors[ind:] factors = factors[:-4] return factors print("Starting the factoring of", compNum, "composites. . .\n") #main loop foundf = 0 for x in range(compNum): randnum = random.randrange(ranNum) + offset #fetch a number from factordb dbcall = 'http://factordb.com/listtype.php?t=3&mindig=' + str(compSize) + '&perpage=1&start=' + str(randnum) + '&download=1' #some file processing to get the number into a format usable by GMP-ECM temp0 = urllib.request.urlopen(dbcall) temp1 = temp0.read() composite = temp1.decode(encoding='UTF-8') composite = composite.strip("\n") fstart = time.time() #print number being worked on print("Composite", x + 1, "is:", composite) factorT = subprocess.run(['ecm', '-q', '-c', '100', '11e2'], stdout=subprocess.PIPE, input=temp1) factors = factorStr(factorT) if (len(factors) == len(composite)) and level > 1: # print("No factors found at 11e2! Trying 11e3. . .") factorT = subprocess.run(['ecm', '-c', '100', '-q', '11e3'], stdout=subprocess.PIPE, input=temp1) factors = factorStr(factorT) if (len(factors) == len(composite)) and level > 2: print("No factors found at 11e3! Trying 11e4. . .") factorT = subprocess.run(['ecm', '-c', '200', '-q', '11e4'], stdout=subprocess.PIPE, input=temp1) factors = factorStr(factorT) if (len(factors) == len(composite)) and level > 3: print("No factors found at 11e4! Trying 43e4. . .") factorT = subprocess.run(['ecm', '-q', '43e4'], stdout=subprocess.PIPE, input=temp1) factors = factorStr(factorT) if (len(factors) == len(composite)) and level > 4: print("No factors found at 43e4! Trying 11e5. . .") factorT = subprocess.run(['ecm', '-q', '11e5'], stdout=subprocess.PIPE, input=temp1) factors = factorStr(factorT) if (len(factors) > len(composite)): foundf += 1 factors = factors.replace(' ','*') send2db(composite, factors) print("Factors for", x + 1, ":", factors) else: print("No factors found!") runtime = time.time() - fstart print("Elapsed time was", int(runtime / 60), "minute(s) and", int(runtime % 60), "second(s). So far,", foundf, "of", x + 1, "(", int((foundf * 100) / (x + 1)), "%) have been factored.\n") print("All", compNum, "composites completed.") |
![]() |
![]() |
![]() |
#1612 |
May 2019
Rome, Italy
5×7 Posts |
![]()
Thanks for the suggestions! I'll look into YAFU and Colab.
|
![]() |
![]() |
![]() |
#1613 |
Sep 2002
Vienna, Austria
21910 Posts |
![]()
In the same vein, a simple batch-ECM shell script:
Code:
# usage: auto_ecm.sh <digits> <no of composites> <offset> <B1> <no of curves> wget -O c.inp "http://factordb.com/listtype.php?t=3&mindig=$1&perpage=$2&start=$3&download=1" sed -i 's/ /\n/g' c.inp ./ecm -q -c $5 -inp c.inp $4 > c.out paste -d '=' c.inp c.out > c.result sed -i 's/ /\*/g' c.result grep -e "\*" c.result > c.upload rm c.inp rm c.out rm c.result curl -POST -F format=7 -F "report=<c.upload" http://factordb.com/report.php |
![]() |
![]() |
![]() |
#1614 | |
"Seth"
Apr 2019
2·53 Posts |
![]() Quote:
I'd love to expand ECM reporting to allow for other sigma/parameterization (which I've already coded up) |
|
![]() |
![]() |
![]() |
#1615 |
May 2009
Russia, Moscow
43×59 Posts |
![]()
FYI: I've factored with ecm ~15000 C83's out of 33000.
|
![]() |
![]() |
![]() |
#1616 |
"Ed Hall"
Dec 2009
Adirondack Mtns
3,617 Posts |
![]()
I'm running over 50% success (ECM through 11e4) in all the range from higher 83 through 90 dd using the code I posted earlier. Here are the results from an i7 laptop (4 cores) for a run I did yesterday:
Code:
So far, 292 of 500 ( 58 %) have been factored. So far, 282 of 500 ( 56 %) have been factored. So far, 285 of 500 ( 57 %) have been factored. So far, 284 of 500 ( 56 %) have been factored. |
![]() |
![]() |
![]() |
#1617 |
"Nuri, the dragon :P"
Jul 2016
Good old Germany
80110 Posts |
![]() |
![]() |
![]() |
![]() |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Database for k-b-b's: | 3.14159 | Miscellaneous Math | 325 | 2016-04-09 17:45 |
Factoring database issues | Mini-Geek | Factoring | 5 | 2009-07-01 11:51 |
database.zip | HiddenWarrior | Data | 1 | 2004-03-29 03:53 |
Database layout | Prime95 | PrimeNet | 1 | 2003-01-18 00:49 |
Is there a performance database? | Joe O | Lounge | 35 | 2002-09-06 20:19 |