Sz\303\241m\303\255t\303\263g\303\251pes sz\303\241melm\303\251let J\303\241rai Antal Ezek a programok csak szeml\303\251ltet\303\251sre szolg\303\241lnak
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">1. A pr\303\255mek eloszl\303\241sa, szit\303\241l\303\241s</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">2. Egyszer\305\261 faktoriz\303\241l\303\241si m\303\263dszerek</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">3. Egyszer\305\261 pr\303\255mtesztel\303\251si m\303\263dszerek</Font></Text-field> LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn
<Text-field style="Heading 1" layout="Heading 1">4. Lucas-sorozatok</Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">5. Alkalmaz\303\241sok </Font></Text-field> restart; with(numtheory); N1FJJkdJZ2NkRzYiSSliaWdvbWVnYUdGJEkmY2ZyYWNHRiRJKWNmcmFjcG9sR0YkSStjeWNsb3RvbWljR0YkSSlkaXZpc29yc0dGJEkpZmFjdG9yRVFHRiRJKmZhY3RvcnNldEdGJEknZmVybWF0R0YkSSlpbWFndW5pdEdGJEkmaW5kZXhHRiRJL2ludGVncmFsX2Jhc2lzR0YkSSlpbnZjZnJhY0dGJEknaW52cGhpR0YkSSppc3NxcmZyZWVHRiRJJ2phY29iaUdGJEkqa3JvbmVja2VyR0YkSSdsYW1iZGFHRiRJKWxlZ2VuZHJlR0YkSSltY29tYmluZUdGJEkpbWVyc2VubmVHRiRJKG1pZ2NkZXhHRiRJKm1pbmtvd3NraUdGJEkobWlwb2x5c0dGJEklbWxvZ0dGJEknbW9iaXVzR0YkSSZtcm9vdEdGJEkmbXNxcnRHRiRJKW5lYXJlc3RwR0YkSSpudGhjb252ZXJHRiRJKW50aGRlbm9tR0YkSSludGhudW1lckdGJEknbnRocG93R0YkSSZvcmRlckclKnByb3RlY3RlZEdJKXBkZXhwYW5kR0YkSSRwaGlHRiRJI3BpR0YkSSpwcHJpbXJvb3RHRiRJKXByaW1yb290R0YkSShxdWFkcmVzR0YkSStyb290c3VuaXR5R0YkSSpzYWZlcHJpbWVHRiRJJnNpZ21hR0YkSSpzcTJmYWN0b3JHRiRJKHN1bTJzcXJHRiRJJHRhdUdGJEkldGh1ZUdGJA==
<Text-field style="Heading 2" layout="Heading 2">5.1. Fermat-sz<Font encoding="UTF-8">\303\241</Font>mok.</Text-field>
<Text-field style="Heading 2" layout="Heading 2">5.2. Feladat.</Text-field> # # This procedure try to find factors i*2^(n+2)+1, 1<=i<=k # of the Fermat number 2^(2^n)+1. # fermatfactors:=proc(n::posint,k::posint) local i,f; f:=[]; for i from 1+2^(n+2) by 2^(n+2) to k*2^(n+2)+1 do if 2&^(2^n)+1 mod i=0 then f:=[op(f),i] fi od; f end; Zio2JCdJIm5HNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJrR0YmRic2JEkiaUdGJkkiZkdGJkYmRiZDJT5GLTciPyhGLCwmIiIiRjMpIiIjLCZGJUYzRjVGM0YzRjQsJiomRipGM0Y0RjNGM0YzRjNJJXRydWVHRihAJC8tSSRtb2RHRiY2JCwmLUkjJl5HRiY2JEY1KUY1RiVGM0YzRjNGLCIiIT5GLTckLUkjb3BHRig2I0YtRixGLUYmRiZGJg== fermatfactors(5,10); fermatfactors(5,100000); NyMiJFQn NyQiJFQnIig8L3En
<Text-field style="Heading 2" layout="Heading 2">5.3. Feladat.</Text-field> interface(verboseproc=2); IiIi print(fermat); Zio2JCdJIm5HNiItSSNPckdGJjYkSSpub25uZWdpbnRHJSpwcm90ZWN0ZWRHLUkkTm90R0YmNiNJKWNvbnN0YW50R0YrSSZfaW5mb0dGJjYkSSJmR0YmSSVpbmZvR0YmNiNJYW9Db3B5cmlnaHR+KGMpfjE5OTJ+Ynl+dGhlflVuaXZlcnNpdHl+b2Z+V2F0ZXJsb28ufkFsbH5yaWdodHN+cmVzZXJ2ZWQuR0YmRiZAKS8lJm5hcmdzRyIiIU82JC1JJGNhdEdGKzYkSUpUaGV+cHJpbWFsaXR5fmNoYXJhY3Rlcn5vZn50aGV+Zm9sbG93aW5nfkdGJklCRmVybWF0fm51bWJlcnN+aXN+a25vd25+dG9+TWFwbGU6R0YmLUklc29ydEdGKzYjLUkoY29udmVydEdGKzYkSTVrbm93bl9mZXJtYXRfbnVtYmVyc0dGJi5JJWxpc3RHRistSSV0eXBlR0YrNiRGJS5JJW5hbWVHRitPLCYpIiIjKUZSRiUiIiJGVEZULUZLNiRGJS5GKkMlQCc0LUknbWVtYmVyR0YrNiRGJUZHT0kyY2hhcmFjdGVyfnVua25vd25HRiY1MkYlIiNBL0ksX0VudlRyeUhhcmRHRiZJJXRydWVHRis+RjJGUD5GMkkvb2JqZWN0fnRvb35iaWdHRiZAJC9GOEZSQD0xRiUiIiU+RjBJLGl0fmlzfnByaW1lR0YmL0YlIiImPkYwNiRJO2l0fmlzfmNvbXBsZXRlbHl+ZmFjdG9yZWR+R0YmKiYtSSFHRiY2IywmLUkoaWZhY3RvckdGJjYjIiRTJ0ZURlRGVEZULUZhcDYjLCYtRmVwNiMiKDsvcSdGVEZURlRGVC9GJSIiJz5GMDYkRl5wKiYtRmFwNiMsJi1GZXA2IyInd1RGRlRGVEZURlQtRmFwNiMsJi1GZXA2IyIvPzJKQC9HbkZURlRGVEZUL0YlIiIoPkYwNiRGXnAqJi1GYXA2IywmLUZlcDYjIjI7c1xGIiplXCdmRlRGVEZURlQtRmFwNiMsJi1GZXA2IyI3P1owSF5vKyMqby9kRlRGVEZURlQvRiUiIik+RjA2JEZecComLUZhcDYjLCYtRmVwNiMiMScqR2JoaiMqUTdGVEZURlRGVCwmKiYpLUZhcDYjRlIiIzZGVC1GYXA2IyJmbjp4d0AheTNMbzdvc1whPTpfT1IqZiNlUFlFbmljTmMlRlRGVEZURlRGVC9GJSIiKj5GMDYkRl5wKigtRmFwNiMsJi1GZXA2IyIoS1tVI0ZURlRGVEZULCYqJi1GYXA2IyJPKGYhPjckeSRHbSI9LFdBNWg0KTNAbjVWU09GVEZddEZURlRGVEZURlQsJiomLUZhcDYjIltxMiRwbGpAR0JVbmxxdl1TT185Vl4iKjMnSEY/JmYvJGVEMmEhPWpyXC0jPUMhXClIbyQqR0BPRlRGXXRGVEZURlRGVEZUL0YlIiM1PkYwNiRGXnAqKi1GYXA2IywmLUZlcDYjIil3RGZYRlRGVEZURlQtRmFwNiMsJi1GZXA2IyIrMz0uKFsnRlRGVEZURlQsJiomLUZhcDYjIkZeIUhfOyslKj5rJyozIltqRGRTdzgiRlQpRl50IiM3RlRGVEZURlRGVCwmKiYtRmFwNiMsJiomI0ZUImluS3dCJGU3MEwrSCdcLkl3OFxfZk1hKUhdJkdVayM0LiFINkZURjJGVEZUI0ZUIiUjPikhIiJGVClGXnQiIzhGVEZURlRGVEZUL0YlRmB0PkYwNiRGXnAqLC1GYXA2IywmLUZlcDYjIicpWz4kRlRGVEZURlQtRmFwNiMsJi1GZXA2IyInW1soKkZURlRGVEZULCYqJi1GYXA2IyIyejdgJXkyS0Q1RlQpRl50IiM5RlRGVEZURlRGVCwmKiYtRmFwNiMiMzYoUUhHJTN0WVZGVEZceEZURlRGVEZURlQsJiomLUZhcDYjLCYqJiNGVCJlbnMjKSo0NGw9cylIMk0uTXUsRyNSVzVTSXdQcmM5aV8iRlRGMkZURlRGaXdGW3hGVEZceEZURlRGVEZURlQvRiVGZHk+RjBJMWl0fmlzfmNvbXBvc2l0ZX5HRiYvRiUiIz8+RjBJMGl0fmlzfmNvbXBvc2l0ZUdGJi9GJUZcb0Znei9GJSIjQ0ZnekZlbkMkQCUtSSlhc3NpZ25lZEdGKzYjJkkrZmVybWF0X3RhYkdGJjYjRiU+RjNGYVtsWVFGbnVtYmVyfnJlY29nbml6ZWR+YnV0fm5vfmZhY3Rvcn5rbm93bkYmPkYwNiQtSSNpZkdGKzYlLy1JJW5vcHNHRis2I0YzRlRJOml0fmhhc350aGlzfnByaW1lfmZhY3Rvcn5HRiZJPGl0fmhhc350aGVzZX5wcmltZX5mYWN0b3JzfkdGJi1JI29wR0YrRl9cbE9JQ25vfmNvbXBsZXRlfmZhY3Rvcml6YXRpb25+aXN+a25vd25HRiZPRjIuLSUpcHJvY25hbWVHNiMlJWFyZ3NHRiZGJjYmRkdGR0ZiW2xGYlts
<Text-field style="Heading 2" layout="Heading 2">5.4. Mersenne-sz<Font encoding="UTF-8">\303\241</Font>mok.</Text-field> mersennes:=[2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497,86243,110503,132049,216091,756839,859833,1257787,1398269,2976221,3021377,6972593,13466917,20996011,24036583,25964951,30402457,32582657,37156667,42643801,43112609]; N1EiIiMiIiQiIiYiIigiIzgiIzwiIz4iI0oiI2giIyopIiQyIiIkRiIiJEAmIiQyJyIlejciJS5BIiUiRyMiJTxLIiVgVSIlQlciJSpvKiIlVCoqIiY4NyIiJlAqPiImLDwjIiY0SyMiJihcVyImVmkpIicuMDYiJ1w/OCInIjQ7IyInUm92IidMKWYpIigoeWQ3IihwIylSIiIoQGkoSCIoeDgtJCIoJGZzcCIpPHBZOCIpNmcqNCMiKSRlT1MjIileXCdmIyIpZENTSSIpZEVlSyIpbm06UCIpLFFrVSIpNEU2Vg== map(p->p mod 4, mersennes); N1EiIiMiIiQiIiJGJEYlRiVGJEYkRiVGJUYkRiRGJUYkRiRGJEYlRiVGJUYkRiVGJUYlRiVGJUYlRiVGJEYkRiVGJEYkRiVGJEYlRiVGJUYlRiVGJEYkRiRGJUYlRiRGJUYl logm:=evalf([[i,log[2.](mersennes[i])]$i=1..nops(mersennes)]); N1E3JCQiIiIiIiEkIisrKysrNSEiKjckJCIiI0YmJCIrLEQnXGUiRik3JCQiIiRGJiQiKyU0Rz5LI0YpNyQkIiIlRiYkIitBXE4yR0YpNyQkIiImRiYkIis9KFIvcSRGKTckJCIiJ0YmJCIrVEdZKDMlRik3JCQiIihGJiQiKzl2I3pDJUYpNyQkIiIpRiYkIis1aj5hXEYpNyQkIiIqRiYkIitRdHRJZkYpNyQkIiM1RiYkIitLTXR2a0YpNyQkIiM2RiYkIisnKXBZVG5GKTckJCIjN0YmJCIrKG8lbykpcEYpNyQkIiM4RiYkIitqJlJeLSpGKTckJCIjOUYmJCIrMkZiWCMqRik3JCQiIzpGJiQiK2IrM0s1ISIpNyQkIiM7RiYkIit5YF81NkZqbzckJCIjPEYmJCIrdF1hOjZGam83JCQiIz1GJiQiK0ErOmw2RmpvNyQkIiM+RiYkIis5bFUwN0ZqbzckJCIjP0YmJCIrYDQzNjdGam83JCQiI0BGJiQiKzFLQEM4RmpvNyQkIiNBRiYkIitGdiJ6SyJGam83JCQiI0JGJiQiK3ElKUdYOEZqbzckJCIjQ0YmJCIrc2dKRzlGam83JCQiI0RGJiQiKyFSWjBXIkZqbzckJCIjRUYmJCIrdSdSLVgiRmpvNyQkIiNGRiYkIitYPzlXOkZqbzckJCIjR0YmJCIrdT5oUjtGam83JCQiI0hGJiQiKyxFUHY7RmpvNyQkIiNJRiYkIislUXI1cSJGam83JCQiI0pGJiQiK1l6N3M8RmpvNyQkIiNLRiYkIisicGlIJj5Gam83JCQiI0xGJiQiKyZwcDgoPkZqbzckJCIjTUYmJCIrQGNDRT9Gam83JCQiI05GJiQiK101X1Q/RmpvNyQkIiNPRiYkIitBXV1dQEZqbzckJCIjUEYmJCIrenVuX0BGam83JCQiI1FGJiQiKyZRRUxGI0ZqbzckJCIjUkYmJCIrRjtIb0JGam83JCQiI1NGJiQiKyQ+aEJWI0ZqbzckJCIjVEYmJCIrXEcoPVgjRmpvNyQkIiNVRiYkIis8aStqQ0ZqbzckJCIjVkYmJCIrZiVvZFsjRmpvNyQkIiNXRiYkIisjNGdkXCNGam83JCQiI1hGJiQiK3c8cjlERmpvNyQkIiNZRiYkIityS2VNREZqbzckJCIjWkYmJCIrYDE7T0RGam8= with(plots); plotm:=plot(logm): plotline:=plot(evalf(exp(-gamma))*x,x=1..nops(mersennes)): pointm:=plot(logm,style=POINT): display({plotline,plotm,pointm}); N2duSSxJbnRlcmFjdGl2ZUc2IkkoYW5pbWF0ZUdGJEkqYW5pbWF0ZTNkR0YkSS1hbmltYXRlY3VydmVHRiRJJmFycm93R0YkSS1jaGFuZ2Vjb29yZHNHSShfc3lzbGliR0YkSSxjb21wbGV4cGxvdEdGJEkuY29tcGxleHBsb3QzZEdGJEkqY29uZm9ybWFsR0YkSSxjb25mb3JtYWwzZEdGJEksY29udG91cnBsb3RHRiRJLmNvbnRvdXJwbG90M2RHRiRJKmNvb3JkcGxvdEdGJEksY29vcmRwbG90M2RHRiRJLWN5bGluZGVycGxvdEdGJEksZGVuc2l0eXBsb3RHRiRJKGRpc3BsYXlHRiRJKmRpc3BsYXkzZEdGJEkqZmllbGRwbG90R0YkSSxmaWVsZHBsb3QzZEdGJEkpZ3JhZHBsb3RHRiRJK2dyYWRwbG90M2RHRiRJLGdyYXBocGxvdDNkR0YkSS1pbXBsaWNpdHBsb3RHRiRJL2ltcGxpY2l0cGxvdDNkR0YkSShpbmVxdWFsR0YkSSxpbnRlcmFjdGl2ZUdGJEkyaW50ZXJhY3RpdmVwYXJhbXNHRiRJLWxpc3Rjb250cGxvdEdGJEkvbGlzdGNvbnRwbG90M2RHRiRJMGxpc3RkZW5zaXR5cGxvdEdGJEkpbGlzdHBsb3RHRiRJK2xpc3RwbG90M2RHRiRJK2xvZ2xvZ3Bsb3RHRiRJKGxvZ3Bsb3RHRiRJK21hdHJpeHBsb3RHRiRJKW11bHRpcGxlR0YkSShvZGVwbG90R0YkSSdwYXJldG9HRiRJLHBsb3Rjb21wYXJlR0YkSSpwb2ludHBsb3RHRiRJLHBvaW50cGxvdDNkR0YkSSpwb2xhcnBsb3RHRiRJLHBvbHlnb25wbG90R0YkSS5wb2x5Z29ucGxvdDNkR0YkSTRwb2x5aGVkcmFfc3VwcG9ydGVkR0YkSS5wb2x5aGVkcmFwbG90R0YkSSdyZXBsb3RHRiRJKnJvb3Rsb2N1c0dGJEksc2VtaWxvZ3Bsb3RHRiRJK3NldG9wdGlvbnNHRiRJLXNldG9wdGlvbnMzZEdGJEkrc3BhY2VjdXJ2ZUdGJEkxc3BhcnNlbWF0cml4cGxvdEdGJEkrc3BoZXJlcGxvdEdGJEkpc3VyZmRhdGFHRiRJKXRleHRwbG90R0YkSSt0ZXh0cGxvdDNkR0YkSSl0dWJlcGxvdEdGJA== NictSSdDVVJWRVNHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2JTdRNyQkIiIiIiIhRiw3JCQiIiNGLiQiMyIqKioqKio0XWlcZSIhIzw3JCQiIiRGLiQiMysrKyslNEc+SyNGNDckJCIiJUYuJCIzLisrK0FcTjJHRjQ3JCQiIiZGLiQiMzsrKys9KFIvcSRGNDckJCIiJ0YuJCIzeioqKioqNCVHWSgzJUY0NyQkIiIoRi4kIjNwKioqKipSXkZ6QyVGNDckJCIiKUYuJCIzUSsrKzVqPmFcRjQ3JCQiIipGLiQiMzgrKytRdHRJZkY0NyQkIiM1Ri4kIjM9KysrS010dmtGNDckJCIjNkYuJCIzJCkqKioqKmYpcFlUbkY0NyQkIiM3Ri4kIjNCKioqKipwbyVvKSlwRjQ3JCQiIzhGLiQiM3YqKioqKkhjUl4tKkY0NyQkIiM5Ri4kIjMoKSoqKioqcHFfYkMqRjQ3JCQiIzpGLiQiMyYqKioqKipcMCEzSzUhIzs3JCQiIztGLiQiMysrKyt5YF81NkZgcDckJCIjPEYuJCIzLCsrK3RdYTo2RmBwNyQkIiM9Ri4kIjM0KysrQSs6bDZGYHA3JCQiIz5GLiQiMysrKys5bFUwN0ZgcDckJCIjP0YuJCIzIyoqKioqKkgmNDM2N0ZgcDckJCIjQEYuJCIzJSoqKioqKmY/OFVLIkZgcDckJCIjQUYuJCIzJyoqKioqKnBfPHpLIkZgcDckJCIjQkYuJCIzLisrK3ElKUdYOEZgcDckJCIjQ0YuJCIzKCoqKioqKj4yOyRHOUZgcDckJCIjREYuJCIzMCsrKyFSWjBXIkZgcDckJCIjRUYuJCIzKysrK3UnUi1YIkZgcDckJCIjRkYuJCIzMisrK1g/OVc6RmBwNyQkIiNHRi4kIjMnKioqKioqUig+aFI7RmBwNyQkIiNIRi4kIjM3KysrLEVQdjtGYHA3JCQiI0lGLiQiMzYrKyslUXI1cSJGYHA3JCQiI0pGLiQiMzsrKytZejdzPEZgcDckJCIjS0YuJCIzNisrKyJwaUgmPkZgcDckJCIjTEYuJCIzIyoqKioqKlxwcDgoPkZgcDckJCIjTUYuJCIzKioqKioqKjRpWGktI0ZgcDckJCIjTkYuJCIzMSsrK101X1Q/RmBwNyQkIiNPRi4kIjM2KysrQV1dXUBGYHA3JCQiI1BGLiQiMzUrKyt6dW5fQEZgcDckJCIjUUYuJCIzLSsrKyZRRUxGI0ZgcDckJCIjUkYuJCIzKSoqKioqKnBpIkhvQkZgcDckJCIjU0YuJCIzJSkqKioqKkg+aEJWI0ZgcDckJCIjVEYuJCIzNCsrK1xHKD1YI0ZgcDckJCIjVUYuJCIzJykqKioqKnBAMUlZI0ZgcDckJCIjVkYuJCIzOysrK2Ylb2RbI0ZgcDckJCIjV0YuJCIzMysrKyM0Z2RcI0ZgcDckJCIjWEYuJCIzLysrK3c8cjlERmBwNyQkIiNZRi4kIjMpKioqKioqNEYkZU1ERmBwNyQkIiNaRi4kIjMmKioqKioqSGxnaGAjRmBwLUknQ09MT1VSR0YlNiZJJFJHQkdGJSRGWiEiIiRGLkYuRmd6LUkmU1RZTEVHRiU2I0kmUE9JTlRHRiUtRiQ2JEYqRmF6LUYkNiQ3UzckRiwkIjN3KioqKipmJFtmOWMhIz03JCQiM3RtbW0iNHBFKyNGNCQiM3BaKUdTYjxXNyJGNDckJCIzeUxMMzJoM3ZHRjQkIjMmR2EpKTRPV1VoIkY0NyQkIjNibW07JUc1aSZRRjQkIjMpZkEsWyRlNWxARjQ3JCQiM1RubTsqKXokUSVbRjQkIjNOeiZSZ3g9Jz5GRjQ3JCQiMyJITCQzczt4RWVGNCQiM2g7STE5aVxyS0Y0NyQkIjNCbW1UP3EyUW5GNCQiM3duLE1XczokeSRGNDckJCIzNisrdkI0byJvKEY0JCIzJWZrR1lnX0hKJUY0NyQkIjNbbW1USXViZCcpRjQkIjNfJTM+VHNuMydbRjQ3JCQiM2IrK3YpRy8uaipGNCQiM1NTQyhHbkRxUyZGNDckJCIzWUxMJCkqUiozajVGYHAkIjMoSGQ1WEQ7KW9mRjQ3JCQiM3FtbSJmUkA3OiJGYHAkIjNIR2tnLzxramtGNDckJCIzNCsrXVxyVl03RmBwJCIzYmdfS2l6cD9xRjQ3JCQiMzMrK10jSGcrTiJGYHAkIjNfXCJmbGFUK2UoRjQ3JCQiMzYrK11dYzFZOUZgcCQiM1QiRzlRdHMhPiIpRjQ3JCQiM25tOy84eENMOkZgcCQiM2VeRCY+cGsmMycpRjQ3JCQiM1RMTCR5aDpwaiJGYHAkIjM7JHlhWyh6aCE+KkY0NyQkIjNRTExMSmZ0QzxGYHAkIjM1JXlGTlgkcCRvKkY0NyQkIjM3K11QTD0qbyM9RmBwJCIzI1t5ZmB1RGQtIkZgcDckJCIzRUxMTDtySjw+RmBwJCIzVGFSLnllXHc1RmBwNyQkIjNCK11QJCl6Xzs/RmBwJCIzKXBuNS13KT5LNkZgcDckJCIzOCtdNyE+KzU2I0ZgcCQiM0olM0ZtMlRfPSJGYHA3JCQiM2lMTDNGP2Q0QUZgcCQiM284S0lwXmVTN0ZgcDckJCIzWkwkM1V1IjQrQkZgcCQiMz9NZSRISzM5SCJGYHA3JCQiM3NtbSJ6W0h4UiNGYHAkIjMzJT0pNGd6QVk4RmBwNyQkIjNvbTsvanc5KlwjRmBwJCIzJzRfSmo6cUpTIkZgcDckJCIzJyoqKlxpI1tLdWUjRmBwJCIzVylcV2JdUUZYIkZgcDckJCIzdG1tVDFEeSNvI0ZgcCQiM0c6UW0hb3RpXSJGYHA3JCQiMykpKioqKio0VClHInkjRmBwJCIzTkNGKVx2IWVoOkZgcDckJCIzIyoqKipcMkFkdyhHRmBwJCIzNTEsOVB6bzo7RmBwNyQkIjNBK11QKioqKSozKEhGYHAkIjM8V28sPSVSIW87RmBwNyQkIjMvKytEKDRHVzIkRmBwJCIzcDp0JT0ibztFPEZgcDckJCIzLExMTCdmYHU7JEZgcCQiMyllRkMwJ29SeTxGYHA3JCQiM3cqKioqXHMieW5FJEZgcCQiM1Isd3cmZWpUJD1GYHA3JCQiM1ltOy8sNXljTEZgcCQiMzNYSlNGbHAlKT1GYHA3JCQiM28rK11seTxiTUZgcCQiM3QheTQsUVUqUj5GYHA3JCQiMydITDNua2h4YSRGYHAkIjMvWW40QVcjPio+RmBwNyQkIjNSK10oW1BRWGskRmBwJCIzdSt4IlJqZ2kvI0ZgcDckJCIzMExMJGVKYiJSUEZgcCQiMy95enM3VVEqNCNGYHA3JCQiMycqKipcUCVbNSNRUUZgcCQiMzkkSDBsbioqXDojRmBwNyQkIjNNbm1tJVE3TyRSRmBwJCIzVzZ2PHlSYzNBRmBwNyQkIjNsbW0icGd1Ni4lRmBwJCIzUWszNTg3TWpBRmBwNyQkIjMlUUwzWicqR3o3JUZgcCQiM3RCRSdbJ1ttPEJGYHA3JCQiM2orKytyaCRvQCVGYHAkIjNSaGEqKmVFZW5CRmBwNyQkIjNTTExlaVF0PVZGYHAkIjNncj1IJTMlekNDRmBwNyQkIjMncG1tRVBzKTRXRmBwJCIzZEwkKjRsWSdmWiNGYHA3JCQiM0grXVBMXS8yWEZgcCQiM1VzMSt4Sl9JREZgcDckJCIzPitdaW87MCtZRmBwJCIzcjUmKlJNRXUjZSNGYHA3JEZdeiQiMycpKioqPkhkZilRRUZgcEZhei1JK0FYRVNMQUJFTFNHRiU2JVEhRihGZmpsLUklRk9OVEdGKDYjSShERUZBVUxUR0YlLUklVklFV0dGJTYkO0YsRl16RmpqbA==
<Text-field style="Heading 2" layout="Heading 2">5.5. Feladat.</Text-field> # # This procedure do a pretest for the Mersenne numbers # M[n]=2^n-1. The exponents are taken from # the sequence L. The result is the sequence of sequences, # which contains all exponents n which is prime and the # prime divisors having the form 2*k*n+1 for k until K, where # k congruent to 0 or -n mod 4. # mersennepretest:=proc(L::list(posint),K::posint) local nL,D,M,n,k,d1,d2; nL:=[]; for n in L do if isprime(n) then D:=[n]; d1:=modp(n,4); d2:=modp(-n,4); for k from d2 while k<=K do M:=2*k*n+1; if isprime(M) then if pmod(2&^n-1,M)=0 then D:=[op(D),M]; fi; fi; k:=k+d1; M:=2*k*n+1; if isprime(M) then if 2&^n-1 mod M=0 then D:=[op(D),M] fi; fi; k:=k+d2; od; nL:=[op(nL),D]; fi; od; nL end; Zio2JCdJIkxHNiItSSVsaXN0RyUqcHJvdGVjdGVkRzYjSSdwb3NpbnRHRiknSSJLR0YmRis2KUkjbkxHRiZJIkRHRiZJIk1HRiZJIm5HRiZJImtHRiZJI2QxR0YmSSNkMkdGJkYmRiZDJT5GLzciPyZGMkYlSSV0cnVlR0YpQCQtSShpc3ByaW1lR0YmNiNGMkMnPkYwNyNGMj5GNC1JJW1vZHBHRik2JEYyIiIlPkY1LUZENiQsJEYyISIiRkY/KEYzRjUiIiJGJjFGM0YtQyg+RjEsJiooIiIjRk1GM0ZNRjJGTUZNRk1GTUAkLUY9NiNGMUAkLy1JJXBtb2RHRiY2JCwmLUkjJl5HRiY2JEZTRjJGTUZNRktGMSIiIT5GMDckLUkjb3BHRik2I0YwRjE+RjMsJkYzRk1GNEZNRlBAJEZVQCQvLUkkbW9kR0YmRmVuRmpuRltvPkYzLCZGM0ZNRjVGTT5GLzckLUZebzYjRi9GMEYvRiZGJkYm L:=[i$i=20..1000]; N2FobiIjPyIjQCIjQSIjQiIjQyIjRCIjRSIjRiIjRyIjSCIjSSIjSiIjSyIjTCIjTSIjTiIjTyIjUCIjUSIjUiIjUyIjVCIjVSIjViIjVyIjWCIjWSIjWiIjWyIjXCIjXSIjXiIjXyIjYCIjYSIjYiIjYyIjZCIjZSIjZiIjZyIjaCIjaSIjaiIjayIjbCIjbSIjbiIjbyIjcCIjcSIjciIjcyIjdCIjdSIjdiIjdyIjeCIjeSIjeiIjISkiIyIpIiMjKSIjJCkiIyUpIiMmKSIjJykiIygpIiMpKSIjKikiIyEqIiMiKiIjIyoiIyQqIiMlKiIjJioiIycqIiMoKiIjKSoiIyoqIiQrIiIkLCIiJC0iIiQuIiIkLyIiJDAiIiQxIiIkMiIiJDMiIiQ0IiIkNSIiJDYiIiQ3IiIkOCIiJDkiIiQ6IiIkOyIiJDwiIiQ9IiIkPiIiJD8iIiRAIiIkQSIiJEIiIiRDIiIkRCIiJEUiIiRGIiIkRyIiJEgiIiRJIiIkSiIiJEsiIiRMIiIkTSIiJE4iIiRPIiIkUCIiJFEiIiRSIiIkUyIiJFQiIiRVIiIkViIiJFciIiRYIiIkWSIiJFoiIiRbIiIkXCIiJF0iIiReIiIkXyIiJGAiIiRhIiIkYiIiJGMiIiRkIiIkZSIiJGYiIiRnIiIkaCIiJGkiIiRqIiIkayIiJGwiIiRtIiIkbiIiJG8iIiRwIiIkcSIiJHIiIiRzIiIkdCIiJHUiIiR2IiIkdyIiJHgiIiR5IiIkeiIiJCE9IiQiPSIkIz0iJCQ9IiQlPSIkJj0iJCc9IiQoPSIkKT0iJCo9IiQhPiIkIj4iJCM+IiQkPiIkJT4iJCY+IiQnPiIkKD4iJCk+IiQqPiIkKyMiJCwjIiQtIyIkLiMiJC8jIiQwIyIkMSMiJDIjIiQzIyIkNCMiJDUjIiQ2IyIkNyMiJDgjIiQ5IyIkOiMiJDsjIiQ8IyIkPSMiJD4jIiQ/IyIkQCMiJEEjIiRCIyIkQyMiJEQjIiRFIyIkRiMiJEcjIiRIIyIkSSMiJEojIiRLIyIkTCMiJE0jIiROIyIkTyMiJFAjIiRRIyIkUiMiJFMjIiRUIyIkVSMiJFYjIiRXIyIkWCMiJFkjIiRaIyIkWyMiJFwjIiRdIyIkXiMiJF8jIiRgIyIkYSMiJGIjIiRjIyIkZCMiJGUjIiRmIyIkZyMiJGgjIiRpIyIkaiMiJGsjIiRsIyIkbSMiJG4jIiRvIyIkcCMiJHEjIiRyIyIkcyMiJHQjIiR1IyIkdiMiJHcjIiR4IyIkeSMiJHojIiQhRyIkIkciJCNHIiQkRyIkJUciJCZHIiQnRyIkKEciJClHIiQqRyIkIUgiJCJIIiQjSCIkJEgiJCVIIiQmSCIkJ0giJChIIiQpSCIkKkgiJCskIiQsJCIkLSQiJC4kIiQvJCIkMCQiJDEkIiQyJCIkMyQiJDQkIiQ1JCIkNiQiJDckIiQ4JCIkOSQiJDokIiQ7JCIkPCQiJD0kIiQ+JCIkPyQiJEAkIiRBJCIkQiQiJEMkIiREJCIkRSQiJEYkIiRHJCIkSCQiJEkkIiRKJCIkSyQiJEwkIiRNJCIkTiQiJE8kIiRQJCIkUSQiJFIkIiRTJCIkVCQiJFUkIiRWJCIkVyQiJFgkIiRZJCIkWiQiJFskIiRcJCIkXSQiJF4kIiRfJCIkYCQiJGEkIiRiJCIkYyQiJGQkIiRlJCIkZiQiJGckIiRoJCIkaSQiJGokIiRrJCIkbCQiJG0kIiRuJCIkbyQiJHAkIiRxJCIkciQiJHMkIiR0JCIkdSQiJHYkIiR3JCIkeCQiJHkkIiR6JCIkIVEiJCJRIiQjUSIkJFEiJCVRIiQmUSIkJ1EiJChRIiQpUSIkKlEiJCFSIiQiUiIkI1IiJCRSIiQlUiIkJlIiJCdSIiQoUiIkKVIiJCpSIiQrJSIkLCUiJC0lIiQuJSIkLyUiJDAlIiQxJSIkMiUiJDMlIiQ0JSIkNSUiJDYlIiQ3JSIkOCUiJDklIiQ6JSIkOyUiJDwlIiQ9JSIkPiUiJD8lIiRAJSIkQSUiJEIlIiRDJSIkRCUiJEUlIiRGJSIkRyUiJEglIiRJJSIkSiUiJEslIiRMJSIkTSUiJE4lIiRPJSIkUCUiJFElIiRSJSIkUyUiJFQlIiRVJSIkViUiJFclIiRYJSIkWSUiJFolIiRbJSIkXCUiJF0lIiReJSIkXyUiJGAlIiRhJSIkYiUiJGMlIiRkJSIkZSUiJGYlIiRnJSIkaCUiJGklIiRqJSIkayUiJGwlIiRtJSIkbiUiJG8lIiRwJSIkcSUiJHIlIiRzJSIkdCUiJHUlIiR2JSIkdyUiJHglIiR5JSIkeiUiJCFbIiQiWyIkI1siJCRbIiQlWyIkJlsiJCdbIiQoWyIkKVsiJCpbIiQhXCIkIlwiJCNcIiQkXCIkJVwiJCZcIiQnXCIkKFwiJClcIiQqXCIkKyYiJCwmIiQtJiIkLiYiJC8mIiQwJiIkMSYiJDImIiQzJiIkNCYiJDUmIiQ2JiIkNyYiJDgmIiQ5JiIkOiYiJDsmIiQ8JiIkPSYiJD4mIiQ/JiIkQCYiJEEmIiRCJiIkQyYiJEQmIiRFJiIkRiYiJEcmIiRIJiIkSSYiJEomIiRLJiIkTCYiJE0mIiROJiIkTyYiJFAmIiRRJiIkUiYiJFMmIiRUJiIkVSYiJFYmIiRXJiIkWCYiJFkmIiRaJiIkWyYiJFwmIiRdJiIkXiYiJF8mIiRgJiIkYSYiJGImIiRjJiIkZCYiJGUmIiRmJiIkZyYiJGgmIiRpJiIkaiYiJGsmIiRsJiIkbSYiJG4mIiRvJiIkcCYiJHEmIiRyJiIkcyYiJHQmIiR1JiIkdiYiJHcmIiR4JiIkeSYiJHomIiQhZSIkImUiJCNlIiQkZSIkJWUiJCZlIiQnZSIkKGUiJCllIiQqZSIkIWYiJCJmIiQjZiIkJGYiJCVmIiQmZiIkJ2YiJChmIiQpZiIkKmYiJCsnIiQsJyIkLSciJC4nIiQvJyIkMCciJDEnIiQyJyIkMyciJDQnIiQ1JyIkNiciJDcnIiQ4JyIkOSciJDonIiQ7JyIkPCciJD0nIiQ+JyIkPyciJEAnIiRBJyIkQiciJEMnIiREJyIkRSciJEYnIiRHJyIkSCciJEknIiRKJyIkSyciJEwnIiRNJyIkTiciJE8nIiRQJyIkUSciJFInIiRTJyIkVCciJFUnIiRWJyIkVyciJFgnIiRZJyIkWiciJFsnIiRcJyIkXSciJF4nIiRfJyIkYCciJGEnIiRiJyIkYyciJGQnIiRlJyIkZiciJGcnIiRoJyIkaSciJGonIiRrJyIkbCciJG0nIiRuJyIkbyciJHAnIiRxJyIkciciJHMnIiR0JyIkdSciJHYnIiR3JyIkeCciJHknIiR6JyIkIW8iJCJvIiQjbyIkJG8iJCVvIiQmbyIkJ28iJChvIiQpbyIkKm8iJCFwIiQicCIkI3AiJCRwIiQlcCIkJnAiJCdwIiQocCIkKXAiJCpwIiQrKCIkLCgiJC0oIiQuKCIkLygiJDAoIiQxKCIkMigiJDMoIiQ0KCIkNSgiJDYoIiQ3KCIkOCgiJDkoIiQ6KCIkOygiJDwoIiQ9KCIkPigiJD8oIiRAKCIkQSgiJEIoIiRDKCIkRCgiJEUoIiRGKCIkRygiJEgoIiRJKCIkSigiJEsoIiRMKCIkTSgiJE4oIiRPKCIkUCgiJFEoIiRSKCIkUygiJFQoIiRVKCIkVigiJFcoIiRYKCIkWSgiJFooIiRbKCIkXCgiJF0oIiReKCIkXygiJGAoIiRhKCIkYigiJGMoIiRkKCIkZSgiJGYoIiRnKCIkaCgiJGkoIiRqKCIkaygiJGwoIiRtKCIkbigiJG8oIiRwKCIkcSgiJHIoIiRzKCIkdCgiJHUoIiR2KCIkdygiJHgoIiR5KCIkeigiJCF5IiQieSIkI3kiJCR5IiQleSIkJnkiJCd5IiQoeSIkKXkiJCp5IiQheiIkInoiJCN6IiQkeiIkJXoiJCZ6IiQneiIkKHoiJCl6IiQqeiIkKykiJCwpIiQtKSIkLikiJC8pIiQwKSIkMSkiJDIpIiQzKSIkNCkiJDUpIiQ2KSIkNykiJDgpIiQ5KSIkOikiJDspIiQ8KSIkPSkiJD4pIiQ/KSIkQCkiJEEpIiRCKSIkQykiJEQpIiRFKSIkRikiJEcpIiRIKSIkSSkiJEopIiRLKSIkTCkiJE0pIiROKSIkTykiJFApIiRRKSIkUikiJFMpIiRUKSIkVSkiJFYpIiRXKSIkWCkiJFkpIiRaKSIkWykiJFwpIiRdKSIkXikiJF8pIiRgKSIkYSkiJGIpIiRjKSIkZCkiJGUpIiRmKSIkZykiJGgpIiRpKSIkaikiJGspIiRsKSIkbSkiJG4pIiRvKSIkcCkiJHEpIiRyKSIkcykiJHQpIiR1KSIkdikiJHcpIiR4KSIkeSkiJHopIiQhKSkiJCIpKSIkIykpIiQkKSkiJCUpKSIkJikpIiQnKSkiJCgpKSIkKSkpIiQqKSkiJCEqKSIkIiopIiQjKikiJCQqKSIkJSopIiQmKikiJCcqKSIkKCopIiQpKikiJCoqKSIkKyoiJCwqIiQtKiIkLioiJC8qIiQwKiIkMSoiJDIqIiQzKiIkNCoiJDUqIiQ2KiIkNyoiJDgqIiQ5KiIkOioiJDsqIiQ8KiIkPSoiJD4qIiQ/KiIkQCoiJEEqIiRCKiIkQyoiJEQqIiRFKiIkRioiJEcqIiRIKiIkSSoiJEoqIiRLKiIkTCoiJE0qIiROKiIkTyoiJFAqIiRRKiIkUioiJFMqIiRUKiIkVSoiJFYqIiRXKiIkWCoiJFkqIiRaKiIkWyoiJFwqIiRdKiIkXioiJF8qIiRgKiIkYSoiJGIqIiRjKiIkZCoiJGUqIiRmKiIkZyoiJGgqIiRpKiIkaioiJGsqIiRsKiIkbSoiJG4qIiRvKiIkcCoiJHEqIiRyKiIkcyoiJHQqIiR1KiIkdioiJHcqIiR4KiIkeSoiJHoqIiQhKSoiJCIpKiIkIykqIiQkKSoiJCUpKiIkJikqIiQnKSoiJCgpKiIkKSkqIiQqKSoiJCEqKiIkIioqIiQjKioiJCQqKiIkJSoqIiQmKioiJCcqKiIkKCoqIiQpKioiJCoqKiIlKzU= LL:=mersennepretest(L,10000); N1x1NyMiI0I3JSIjSCIkTCMiJS42NyMiI0o3IyIjUDcjIiNUNyMiI1Y3IyIjWjcjIiNgNyMiI2Y3IyIjaDcjIiNuNyQiI3IiJ3olRyM3IyIjdDcjIiN6NyMiIyQpNyMiIyopNyQiIygqIiZaOSI3IyIkLCI3IyIkLiI3IyIkMiI3IyIkNCI3IyIkOCI3IyIkRiI3IyIkSiI3IyIkUCI3IyIkUiI3IyIkXCI3JCIkXiIiJyp6bCI3IyIkZCI3IyIkaiI3IyIkbiI3IyIkdCI3JCIkeiIiJUw5NyMiJCI9NyMiJCI+NyMiJCQ+NyQiJCg+IiUoWyg3IyIkKj43IyIkNiM3IyIkQiM3IyIkRiM3JCIkSCMiKHRTXSI3I0YnNyUiJFIjIiU4PiInJFF3IjcjIiRUIzcjIiReIzcjIiRkIzcjIiRqIzcjIiRwIzcjIiRyIzckIiR4IyIoKEhANjckIiQiRyImSDQpNyMiJCRHNyMiJCRINyMiJDIkNyMiJDYkNyMiJDgkNyMiJDwkNyMiJEokNyQiJFAkIihQbCFHNyMiJFokNyMiJFwkNyMiJGAkNyMiJGYkNyMiJG4kNyMiJHQkNyMiJHokNyMiJCRRNyMiJCpRNyMiJChSNyMiJCwlNyMiJDQlNyMiJD4lNyMiJEAlNyQiJEolIiVcTTcjIiRMJTcjIiRSJTcjIiRWJTckIiRcJSIoLmpEIjcjIiRkJTcjIiRoJTcjIiRqJTcjIiRuJTcjIiR6JTcjIiQoWzckIiQiXCIoPnhxKDcjIiQqXDcjIiQuJjcjIiQ0JjcjIiRAJjcjIiRCJjcjIiRUJjcjIiRaJjcjIiRkJjcjIiRqJjcjIiRwJjckIiRyJiImNHUjNyMiJHgmNyMiJChlNyMiJCRmNyMiJCpmNyMiJCwnNyMiJDInNyMiJDgnNyMiJDwnNyQiJD4nIickPTUiNyMiJEonNyQiJFQnIiYqKipcNyMiJFYnNyMiJFonNyMiJGAnNyMiJGYnNyMiJGgnNyMiJHQnNyMiJHgnNyMiJCRvNyMiJCJwNyMiJCwoNyMiJDQoNyMiJD4oNyMiJEYoNyMiJEwoNyMiJFIoNyMiJFYoNyMiJF4oNyMiJGQoNyQiJGgoIiUqMyc3IyIkcCg3IyIkdCg3IyIkKHk3IyIkKHo3IyIkNCk3IyIkNik3IyIkQCk3IyIkQik3IyIkRik3JCIkSCkiJmBIKDcjIiRSKTcjIiRgKTckIiRkKSIlZG83IyIkZik3IyIkaik3JCIkeCkiKEZsViI3IyIkIikpNyMiJCQpKTcjIiQoKSk3IyIkMio3IyIkNio3IyIkPio3IyIkSCo3IyIkUCo3JCIkVCoiJUh2NyMiJFoqNyMiJGAqNyQiJG4qIidkI1wmNyMiJHIqNyQiJHgqIid4dicpNyMiJCQpKjcjIiQiKio3IyIkKCoq nops(LL); select(x->evalb(nops(x)=1),LL); nops(%); IiRnIg== N2RzNyMiI0I3IyIjSjcjIiNQNyMiI1Q3IyIjVjcjIiNaNyMiI2A3IyIjZjcjIiNoNyMiI243IyIjdDcjIiN6NyMiIyQpNyMiIyopNyMiJCwiNyMiJC4iNyMiJDIiNyMiJDQiNyMiJDgiNyMiJEYiNyMiJEoiNyMiJFAiNyMiJFIiNyMiJFwiNyMiJGQiNyMiJGoiNyMiJG4iNyMiJHQiNyMiJCI9NyMiJCI+NyMiJCQ+NyMiJCo+NyMiJDYjNyMiJEIjNyMiJEYjNyMiJEwjNyMiJFQjNyMiJF4jNyMiJGQjNyMiJGojNyMiJHAjNyMiJHIjNyMiJCRHNyMiJCRINyMiJDIkNyMiJDYkNyMiJDgkNyMiJDwkNyMiJEokNyMiJFokNyMiJFwkNyMiJGAkNyMiJGYkNyMiJG4kNyMiJHQkNyMiJHokNyMiJCRRNyMiJCpRNyMiJChSNyMiJCwlNyMiJDQlNyMiJD4lNyMiJEAlNyMiJEwlNyMiJFIlNyMiJFYlNyMiJGQlNyMiJGglNyMiJGolNyMiJG4lNyMiJHolNyMiJChbNyMiJCpcNyMiJC4mNyMiJDQmNyMiJEAmNyMiJEImNyMiJFQmNyMiJFomNyMiJGQmNyMiJGomNyMiJHAmNyMiJHgmNyMiJChlNyMiJCRmNyMiJCpmNyMiJCwnNyMiJDInNyMiJDgnNyMiJDwnNyMiJEonNyMiJFYnNyMiJFonNyMiJGAnNyMiJGYnNyMiJGgnNyMiJHQnNyMiJHgnNyMiJCRvNyMiJCJwNyMiJCwoNyMiJDQoNyMiJD4oNyMiJEYoNyMiJEwoNyMiJFIoNyMiJFYoNyMiJF4oNyMiJGQoNyMiJHAoNyMiJHQoNyMiJCh5NyMiJCh6NyMiJDQpNyMiJDYpNyMiJEApNyMiJEIpNyMiJEYpNyMiJFIpNyMiJGApNyMiJGYpNyMiJGopNyMiJCIpKTcjIiQkKSk3IyIkKCkpNyMiJDIqNyMiJDYqNyMiJD4qNyMiJEgqNyMiJFAqNyMiJFoqNyMiJGAqNyMiJHIqNyMiJCQpKjcjIiQiKio3IyIkKCoq IiRPIg==
<Text-field style="Heading 2" layout="Heading 2">5.6. Feladat.</Text-field> interface(verboseproc=2); IiIj print(mersenne); Zio2IydJIm5HNiI8JEkncG9zaW50RyUqcHJvdGVjdGVkRzcjRig2I0kid0dGJjYjSWFvQ29weXJpZ2h0fihjKX4xOTkyfmJ5fnRoZX5Vbml2ZXJzaXR5fm9mfldhdGVybG9vLn5BbGx+cmlnaHRzfnJlc2VydmVkLkdGJkYmQyVAJDAlJm5hcmdzRyIiIllROndyb25nfm51bWJlcn5vZn5hcmd1bWVudHNGJj5GLDdNIiIjIiIkIiImIiIoIiM4IiM8IiM+IiNKIiNoIiMqKSIkMiIiJEYiIiRAJiIkMiciJXo3IiUuQSIlIkcjIiU8SyIlYFUiJUJXIiUqbyoiJVQqKiImODciIiZQKj4iJiw8IyImNEsjIiYoXFciJlZpKSInLjA2IidcPzgiJyI0OyMiJ1JvdiInTCVmKSIoKHlkNyIocCMpUiIiKEBpKEgiKHg4LSQiKCRmc3AiKTxwWTgiKTZnKjQjIikkZU9TIyIpXlwnZiNJJU5VTExHRilAJS1JJXR5cGVHRik2JEYlNyMuRihDJEAkMi1JJW5vcHNHRilGKyZGJTYjRjNZUTBpbmRleH50b29+bGFyZ2VGJiwmKUY4JkYsNiNGaG9GM0YzISIiQCctSSdtZW1iZXJHRik2JEYlRiwsJilGOEYlRjNGM0ZgcDUyRiUmRiw2I0ZgcDQtSShpc3ByaW1lRzYkRilJKF9zeXNsaWJHRiY2I0YlSSZmYWxzZUdGKUklRkFJTEdGKUYmRiZGJg==
<Text-field style="Heading 2" layout="Heading 2">5.7. h*2^m+-1 alak<Font encoding="UTF-8">\303\272</Font> pr<Font encoding="UTF-8">\303\255</Font>mek keres<Font encoding="UTF-8">\303\251</Font>se.</Text-field> # # A pretest will be done for (h0+c*h)*b^n+d, where h runs # from 0 to H-1 and d in D. All prime divisors from P0 to # P1 will be tried. P0 must be odd, and b,c must have prime # factors smaller then P0. The values h, for which # (h0+c*h)*b^n+d not divisible with primes from P0 to P1 # for all d in D are given back. # pretest:=proc(h0::nonnegint,H::posint,c::posint,b::posint,n::posint, D::set(integer),P0::posint,P1::posint) local T,h,p,d,hh,L,nn,bb,cc,bT,cT,i,j; T:=array(0..H-1); for h from 0 to H-1 do T[h]:=1 od; bT:=array(0..b-1); # table of inverses for b for i from 0 to b-1 do bT[i]:=0 od; for i from 0 to b-1 do for j from 0 to b-1 do if irem(i*j+1,b)=0 then bT[i]:=j fi od od; cT:=array(0..c-1); # table of inverses for c for i from 0 to c-1 do cT[i]:=0 od; for i from 0 to c-1 do for j from 0 to c-1 do if irem(i*j+1,c)=0 then cT[i]:=j fi od od; for p from P0 to P1 by 2 do if isprime(p) then nn:=modp(n,p-1); bb:=(bT[modp(p,b)]*p+1)/b; bb:=modp(bb&^nn,p); cc:=(cT[modp(p,c)]*p+1)/c; for d in D do hh:=modp((-d*bb-h0)*cc,p); for h from hh to H-1 by p do T[h]:=0; od od fi od; L:=[]; for h from 0 to H-1 do if T[h]=1 then L:=[op(L),h] fi od; L end; Zio2KidJI2gwRzYiSSpub25uZWdpbnRHJSpwcm90ZWN0ZWRHJ0kiSEdGJkkncG9zaW50R0YoJ0kiY0dGJkYrJ0kiYkdGJkYrJ0kibkdGJkYrJ0kiREdGJi1JJHNldEdGKDYjSShpbnRlZ2VyR0YoJ0kjUDBHRiZGKydJI1AxR0YmRis2L0kiVEdGJkkiaEdGJkkicEdGJkkiZEdGJkkjaGhHRiZJIkxHRiZJI25uR0YmSSNiYkdGJkkjY2NHRiZJI2JUR0YmSSNjVEdGJkkiaUdGJkkiakdGJkYmRiZDLj5GPS1JJmFycmF5R0YoNiM7IiIhLCZGKiIiIkZSISIiPyhGPkZQRlJGUUkldHJ1ZUdGKD4mRj02I0Y+RlI+RkYtRk02IztGUCwmRi9GUkZSRlM/KEZIRlBGUkZnbkZVPiZGRjYjRkhGUD8oRkhGUEZSRmduRlU/KEZJRlBGUkZnbkZVQCQvLUklaXJlbUdGKDYkLCYqJkZIRlJGSUZSRlJGUkZSRi9GUD5Gam5GST5GRy1GTTYjO0ZQLCZGLUZSRlJGUz8oRkhGUEZSRmpvRlU+JkZHRltvRlA/KEZIRlBGUkZqb0ZVPyhGSUZQRlJGam9GVUAkLy1GYW82JEZjb0YtRlA+Rl1wRkk/KEY/RjkiIiNGO0ZVQCQtSShpc3ByaW1lRzYkRihJKF9zeXNsaWJHRiY2I0Y/Qyc+RkMtSSVtb2RwR0YoNiRGMSwmRj9GUkZSRlM+RkQqJiwmKiYmRkY2Iy1GYHE2JEY/Ri9GUkY/RlJGUkZSRlJGUkYvRlM+RkQtRmBxNiQtSSMmXkdGJjYkRkRGQ0Y/PkZFKiYsJiomJkZHNiMtRmBxNiRGP0YtRlJGP0ZSRlJGUkZSRlJGLUZTPyZGQEYzRlVDJD5GQS1GYHE2JComLCYqJkZARlJGREZSRlNGJUZTRlJGRUZSRj8/KEY+RkFGP0ZRRlU+RldGUD5GQjciPyhGPkZQRlJGUUZVQCQvRldGUj5GQjckLUkjb3BHRig2I0ZCRj5GQkYmRiZGJg== # # This procedure do the Proth test for the number n=h*2^m+1. # proth:=proc(h::posint,m::posint) local a,b,n; n:=h*2^m+1; if h>=2^m then error "first parmeter is too large",h fi; if not type(h,odd) then error "first parameter must be odd",h fi; if m=1 or m=2 then return true fi; if m=3 then if h=5 then return true else return false fi fi; # 2 is not a quadratic residue mod n, we start with 3 # (2*a|n)=(a|n), hence enough to try odd bases a for a from 3 by 2 do b:=2&^m mod a; b:=h*b+1 mod a; # by quadratic reciprocity, (a|n)=(n|a)=(b|a) b:=modp(2&^m,a); b:=modp(h*b+1,a); if jacobi(b,a)=0 then return false fi; if jacobi(b,a)=-1 then if modp(a&^((n-1)/2),n)=n-1 then return true else return false fi; fi; od end; Zio2JCdJImhHNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJtR0YmRic2JUkiYUdGJkkiYkdGJkkibkdGJkYmRiZDKD5GLiwmKiZGJSIiIikiIiNGKkYzRjNGM0YzQCQxRjRGJVk2JFE8Zmlyc3R+cGFybWV0ZXJ+aXN+dG9vfmxhcmdlRiZGJUAkNC1JJXR5cGVHRig2JEYlSSRvZGRHRihZNiRRPGZpcnN0fnBhcmFtZXRlcn5tdXN0fmJlfm9kZEYmRiVAJDUvRipGMy9GKkY1T0kldHJ1ZUdGKEAkL0YqIiIkQCUvRiUiIiZGSE9JJmZhbHNlR0YoPyhGLEZMRjVGJkZJQyg+Ri0tSSRtb2RHRiY2JC1JIyZeR0YmNiRGNUYqRiw+Ri0tRlY2JCwmKiZGJUYzRi1GM0YzRjNGM0YsPkYtLUklbW9kcEdGKEZXPkYtLUZcb0ZnbkAkLy1fSSpudW10aGVvcnlHNiRGKEkoX3N5c2xpYkdGJkknamFjb2JpR0YmNiRGLUYsIiIhRlBAJC9GYW8hIiJAJS8tRlxvNiQtRlk2JEYsLCYqJiNGM0Y1RjNGLkYzRjNGZHBGW3BGLiwmRi5GM0YzRltwRkhGUEYmRiZGJg== # # After a pretest the Proth test is used to find primes # (h0+c*h)*2^n+1, where h runs from 0 to H-1. All prime # divisors from interval P will be tried during the pretest. # prothprimes:=proc(h0::posint,c::posint,H::posint,n::posint,P::range(posint)) local h,L,LL; L:=pretest(h0,H,c,2,n,{1},op(1,P),op(2,P)); LL:=[]; for h in L do if proth(h0+c*h,n) then LL:=[op(LL),h] fi od; LL end; Zio2JydJI2gwRzYiSSdwb3NpbnRHJSpwcm90ZWN0ZWRHJ0kiY0dGJkYnJ0kiSEdGJkYnJ0kibkdGJkYnJ0kiUEdGJi1JJnJhbmdlR0YoNiNGJzYlSSJoR0YmSSJMR0YmSSNMTEdGJkYmRiZDJj5GNi1JKHByZXRlc3RHRiY2KkYlRixGKiIiI0YuPCMiIiItSSNvcEdGKDYkRj9GMC1GQTYkRj1GMD5GNzciPyZGNUY2SSV0cnVlR0YoQCQtSSZwcm90aEdGJjYkLCZGJUY/KiZGKkY/RjVGP0Y/Ri4+Rjc3JC1GQTYjRjdGNUY3RiZGJkYm prothprimes(3,30,3000,2000,7..1000); NykiJD0mIiQiZiIkaCkiJSVIIiIlXToiJXpHIiVASA==
<Text-field style="Heading 2" layout="Heading 2">5.8. Feladat.</Text-field>
<Text-field style="Heading 2" layout="Heading 2">5.9. Feladat.</Text-field> # # This procedure calculate the Lucas sequence terms # [V[n],V[n+1]]. If the parameter N also given # then the calculations are done mod N. Here V[n]=a^n+b^n, # where a,b are the roots of x^2-Px+Q=0. # lucasV:=proc(n,P,Q,N) local L,B,i,Qk; B:=convert(n,base,2); Qk:=1; if nargs=3 then L:=[2,P]; for i from nops(B) to 1 by -1 do if B[i]=0 then L:=[L[1]^2-2*Qk,L[2]*L[1]-P*Qk]; Qk:=Qk^2; else L:=[L[2]*L[1]-P*Qk,L[2]^2-2*Q*Qk]; Qk:=Qk^2*Q; fi; od; else L:=[2 mod N,P mod N]; for i from nops(B) to 1 by -1 do if B[i]=0 then L:=[L[1]&^2-2*Qk mod N,L[2]*L[1]-P*Qk mod N]; Qk:=Qk&^2 mod N; else L:=[L[2]*L[1]-P*Qk mod N,L[2]&^2-2*Q*Qk mod N]; Qk:=Qk&^2*Q mod N; fi; od; fi; L end; Zio2Jkkibkc2IkkiUEdGJUkiUUdGJUkiTkdGJTYmSSJMR0YlSSJCR0YlSSJpR0YlSSNRa0dGJUYlRiVDJj5GKy1JKGNvbnZlcnRHJSpwcm90ZWN0ZWRHNiVGJEklYmFzZUdGJSIiIz5GLSIiIkAlLyUmbmFyZ3NHIiIkQyQ+Rio3JEY1RiY/KEYsLUklbm9wc0dGMjYjRishIiJGN0kldHJ1ZUdGMkAlLyZGKzYjRiwiIiFDJD5GKjckLCYqJCkmRio2I0Y3RjVGN0Y3KiZGNUY3Ri1GN0ZDLCYqJiZGKjYjRjVGN0ZQRjdGNyomRiZGN0YtRjdGQz5GLSokKUYtRjVGN0MkPkYqNyRGUywmKiQpRlVGNUY3RjcqKEY1RjdGJ0Y3Ri1GN0ZDPkYtKiZGWkY3RidGN0MkPkYqNyQtSSRtb2RHRiU2JEY1RigtRmJvNiRGJkYoPyhGLEZARkNGN0ZEQCVGRkMkPkYqNyQtRmJvNiQsJi1JIyZeR0YlNiRGUEY1RjdGUkZDRigtRmJvNiRGU0YoPkYtLUZibzYkLUZfcDYkRi1GNUYoQyQ+Rio3JEZhcC1GYm82JCwmLUZfcDYkRlVGNUY3RltvRkNGKD5GLS1GYm82JComRmZwRjdGJ0Y3RihGKkYlRiVGJQ== # # This procedure calculate a^h+a^(-h) for a unit a=r+s*sqrt(D) # with norm 1. Here r,s rational numbers, D must be a square # free integer. All computations are done mod N. # rieselsetup:=proc(r,s,D,h,N) local P,a; a:=r+s*sqrt(D); P:=r+s*sqrt(D)+(r-s*sqrt(D))/(r^2-s^2*D); if not type(P,integer) then ERROR(a+1/a, `not an integer`) fi; lucasV(h,P,1,N)[1]; end; Zio2J0kickc2Ikkic0dGJUkiREdGJUkiaEdGJUkiTkdGJTYkSSJQR0YlSSJhR0YlRiVGJUMmPkYsLCZGJCIiIiomRiZGMC1JJXNxcnRHRiU2I0YnRjBGMD5GKywoRiRGMEYxRjAqJiwmRiRGMEYxISIiRjAsJiokKUYkIiIjRjBGMComKUYmRj1GMEYnRjBGOUY5RjBAJDQtSSV0eXBlRyUqcHJvdGVjdGVkRzYkRitJKGludGVnZXJHRkQtSSZFUlJPUkdGRDYkLCZGLEYwKiRGLEY5RjBJL25vdH5hbn5pbnRlZ2VyR0YlJi1JJ2x1Y2FzVkdGJTYmRihGK0YwRik2I0YwRiVGJUYl # # This procedure use iteration v<-v^2-2 starting with v=a^h+a^-h # where the quadratic unit a=r+s*sqrt(D) is given for the # primality testing of h*2^n-1. Here n>1 and h<2^n is odd. # riesel:=proc(h,n,r,s,D) local N,v,i; if h>=2^n then error "first parameter is too large",h fi; if type(h,even) then error "first parameter have to be odd",h fi; if n<2 then error "second parameter is too small",h fi; N:=h*2^n-1; v:=rieselsetup(r,s,D,h,N); for i to n-2 do v:=v^2-2 mod N od; evalb(v=0); end; Zio2J0kiaEc2IkkibkdGJUkickdGJUkic0dGJUkiREdGJTYlSSJOR0YlSSJ2R0YlSSJpR0YlRiVGJUMpQCQxKSIiI0YmRiRZNiRRPWZpcnN0fnBhcmFtZXRlcn5pc350b29+bGFyZ2VGJUYkQCQtSSV0eXBlRyUqcHJvdGVjdGVkRzYkRiRJJWV2ZW5HRjlZNiRRP2ZpcnN0fnBhcmFtZXRlcn5oYXZlfnRvfmJlfm9kZEYlRiRAJDJGJkYyWTYkUT5zZWNvbmR+cGFyYW1ldGVyfmlzfnRvb35zbWFsbEYlRiQ+RissJiomRiQiIiJGMUZHRkdGRyEiIj5GLC1JLHJpZXNlbHNldHVwR0YlNidGJ0YoRilGJEYrPyhGLUZHRkcsJkYmRkdGMkZISSV0cnVlR0Y5PkYsLUkkbW9kR0YlNiQsJiokKUYsRjJGR0ZHRjJGSEYrLUkmZXZhbGJHRjk2Iy9GLCIiIUYlRiVGJQ== # # After a pretest the Riesel test with D=5 and unit # (1+sqrt(5))^2/4 is used to find primes (h0+30*h)*2^n-1, # where h runs from 0 to H-1. Only the pairs [3,0],[9,0], # [23,0],[29,0],[7,1],[9,1],[19,1],[27,1],[11,2],[17,2], # [21,2],[27,2],[1,3],[3,3],[13,3],[21,3] for # [h0 mod 30,n mod 4] gives combinations for which the # test may used and N is not divisible by 2,3,5, hence # this procedure should be used only with these pairs. # All prime divisors until P will be tried during the # pretest. # rieselsqrt5:=proc(h0,H,n,P) local h,L,LL; L:=pretest(h0,H,30,2,n,{-1},7,P); LL:=[]; for h in L do if riesel(h0+30*h,n,3/2,1/2,5) then LL:=[op(LL),h] fi od; LL end; Zio2JkkjaDBHNiJJIkhHRiVJIm5HRiVJIlBHRiU2JUkiaEdGJUkiTEdGJUkjTExHRiVGJUYlQyY+RistSShwcmV0ZXN0R0YlNipGJEYmIiNJIiIjRic8IyEiIiIiKEYoPkYsNyI/JkYqRitJJXRydWVHJSpwcm90ZWN0ZWRHQCQtSSdyaWVzZWxHRiU2JywmRiQiIiIqJkYyRkFGKkZBRkFGJyMiIiRGMyNGQUYzIiImPkYsNyQtSSNvcEdGOzYjRixGKkYsRiVGJUYl rieselsqrt5(3,3000,2000,1000); Ny4iJCQ+IiQ4KCIkSSgiJWs3IiVQOCIlXDgiJSNSIiIlI1wiIiU3OiIlW0AiJUhHIiV1SA==
<Text-field style="Heading 2" layout="Heading 2">5.10. Ikerpr<Font encoding="UTF-8">\303\255</Font>mek.</Text-field> # # This filter left only those h's from the list L in the # resulting list for which (h0+c*h)*2^n+d is base-2 pseudoprime. # prob:=proc(h0::nonnegint,c::posint,n::posint,d::integer,L::list(nonnegint)) local LL,h,N; LL:=[]; for h in L do N:=(h0+c*h)*2^n+d; if modp(3&^(N-1),N)=1 then LL:=[op(LL),h] fi od; LL end; Zio2JydJI2gwRzYiSSpub25uZWdpbnRHJSpwcm90ZWN0ZWRHJ0kiY0dGJkkncG9zaW50R0YoJ0kibkdGJkYrJ0kiZEdGJkkoaW50ZWdlckdGKCdJIkxHRiYtSSVsaXN0R0YoNiNGJzYlSSNMTEdGJkkiaEdGJkkiTkdGJkYmRiZDJT5GNzciPyZGOEYySSV0cnVlR0YoQyQ+RjksJiomLCZGJSIiIiomRipGREY4RkRGREZEKSIiI0YtRkRGREYvRkRAJC8tSSVtb2RwR0YoNiQtSSMmXkdGJjYkIiIkLCZGOUZERkQhIiJGOUZEPkY3NyQtSSNvcEdGKDYjRjdGOEY3RiZGJkYm # # This filter left only those h's from the list L in the # resulting list for which (h0+c*h)*2^n+1 is prime. It use # the Proth test. # exactplus:=proc(h0,c,n,L) local LL,h,a,S; LL:=[]; for h in L do if proth(h0+c*h,n) then LL:=[op(LL),h] fi od; LL end; Zio2JkkjaDBHNiJJImNHRiVJIm5HRiVJIkxHRiU2JkkjTExHRiVJImhHRiVJImFHRiVJIlNHRiVGJUYlQyU+Rio3Ij8mRitGKEkldHJ1ZUclKnByb3RlY3RlZEdAJC1JJnByb3RoR0YlNiQsJkYkIiIiKiZGJkY5RitGOUY5Ric+Rio3JC1JI29wR0YzNiNGKkYrRipGJUYlRiU=
<Text-field style="Heading 2" layout="Heading 2">5.11. Feladat.</Text-field> # # This filter left only those h's from the list L in the # resulting list for which (h0+30*h)*2^n-1 is prime. # exactminus:=proc(h0,n,L) local LL,h; LL:=[]; for h in L do if riesel(h0+30*h,n,3/2,1/2,5) then LL:=[op(LL),h] fi od; LL end; Zio2JUkjaDBHNiJJIm5HRiVJIkxHRiU2JEkjTExHRiVJImhHRiVGJUYlQyU+Rik3Ij8mRipGJ0kldHJ1ZUclKnByb3RlY3RlZEdAJC1JJ3JpZXNlbEdGJTYnLCZGJCIiIiomIiNJRjZGKkY2RjZGJiMiIiQiIiMjRjZGOyIiJj5GKTckLUkjb3BHRjA2I0YpRipGKUYlRiVGJQ==
<Text-field style="Heading 2" layout="Heading 2">5.12. Feladat.</Text-field> # # After a pretest the probabilistic test for N-1, # the Riesel test with D=5 and unit (1+sqrt(5))^2/4 for N-1, # the probabilistic test for N+1, and the Proth test for N+1 # is used to find twin primes N+-1 with N=(h0+30*h)*2^n, # where h runs from 0 to H-1. Only the pairs # [3,0],[9,1],[21,3],[27,2], for [h0 mod 30,n mod 4] gives # combinations for which the Riesel test may used and # N+-1 is not divisible by 2,3,5, hence this procedure # should be used only with these pairs. All prime divisors # until P will be tried during the pretest. # twin:=proc(h0,H,n,P) local LL; LL:=pretest(h0,H,30,2,n,{1,-1},7,P); print(nops(LL)); LL:=prob(h0,30,n,-1,LL); print(nops(LL)); LL:=exactminus(h0,n,LL); print(nops(LL)); LL:=prob(h0,30,n,1,LL); print(nops(LL)); LL:=exactplus(h0,30,n,LL) end; Zio2JkkjaDBHNiJJIkhHRiVJIm5HRiVJIlBHRiU2I0kjTExHRiVGJUYlQys+RiotSShwcmV0ZXN0R0YlNipGJEYmIiNJIiIjRic8JCEiIiIiIiIiKEYoLUkmcHJpbnRHJSpwcm90ZWN0ZWRHNiMtSSVub3BzR0Y4Rik+RiotSSVwcm9iR0YlNidGJEYwRidGM0YqRjY+RiotSStleGFjdG1pbnVzR0YlNiVGJEYnRipGNj5GKi1GPjYnRiRGMEYnRjRGKkY2PkYqLUkqZXhhY3RwbHVzR0YlNiZGJEYwRidGKkYlRiVGJQ== twin(3,20000,400,1000); IiVSPA== IiNz IiNz IiIi NyMiJjZrIg== # # This is a test for measurement densities and times. # First a pretests is done for N+-1 where N=(h0+30*h)*2^n # and h runs from 0 to H-1. The pretest is repeated for # prime limit P=2^e where e is integer from the interval # eint. The time and the remaining number after the # pretest is reported, and p*ln(P)^2 also calculated, # where p is the relative frequency of numbers # passed the pretest. The result of the last pretest # became the input of a probabilistic test for N-1 and # the result of this will be the input of the Riesel test # with D=5 and unit (1+sqrt(5))^2/4 for N-1. The time of # the probabilistic test and the result of booth tests is # reported. The probabilistic test for N+1 and the # Proth test for N+1 also done. Only the pairs # [3,0],[9,1],[21,3],[27,2] for [h0 mod 30,n mod 4] gives # combinations for which the Riesel test # may used and N+-1 is not divisible # by 2,3,5, hence this procedure # should be used only with these pairs. # twintest:=proc(h0,H,n,eint) local e,p,P,L,t,N; print(`Twintest; h0=`,h0,`H=`,H,`n=`,n); N:=(h0+15*H)*2^n; print(`Pretest for N+-1`); for e from op(1,eint) to op(2,eint) do P:=2^e; t:=time(); L:=pretest(h0,H,30,2,n,{1,-1},7,P); t:=time()-t; p:=evalf(nops(L)/H); print(`P=`,2^e,`p=`,p,`p*ln(P)^2=`,evalf((ln(P))^2*p),`time=`,t) od; print(`Test for N+-1`); t:=time(); L:=prob(h0,30,n,-1,L); L:=exactminus(h0,n,L); L:=prob(h0,30,n,1,L); L:=exactplus(h0,30,n,L); t:=time()-t; p:=evalf(nops(L)/H); print(`p=`,p,`p*ln(N)^2=`,evalf((ln(N))^2*p),`time=`,t); L end; Zio2JkkjaDBHNiJJIkhHRiVJIm5HRiVJJWVpbnRHRiU2KEkiZUdGJUkicEdGJUkiUEdGJUkiTEdGJUkidEdGJUkiTkdGJUYlRiVDMC1JJnByaW50RyUqcHJvdGVjdGVkRzYoSS5Ud2ludGVzdDt+aDA9R0YlRiRJI0g9R0YlRiZJI249R0YlRic+Ri8qJiwmRiQiIiIqJiIjOkY7RiZGO0Y7RjspIiIjRidGOy1GMjYjSTFQcmV0ZXN0fmZvcn5OKy0xR0YlPyhGKi1JI29wR0YzNiRGO0YoRjstRkU2JEY/RihJJXRydWVHRjNDKD5GLClGP0YqPkYuLUkldGltZUdGM0YlPkYtLUkocHJldGVzdEdGJTYqRiRGJiIjSUY/Ric8JCEiIkY7IiIoRiw+Ri4sJkZORjtGLkZWPkYrLUkmZXZhbGZHRjM2IyomLUklbm9wc0dGMzYjRi1GO0YmRlYtRjI2KkkjUD1HRiVGTEkjcD1HRiVGK0krcCpsbihQKV4yPUdGJS1GZm42IyomKS1JI2xuRzYkRjNJKF9zeXNsaWJHRiU2I0YsRj9GO0YrRjtJJnRpbWU9R0YlRi4tRjI2I0kuVGVzdH5mb3J+TistMUdGJUZNPkYtLUklcHJvYkdGJTYnRiRGVEYnRlZGLT5GLS1JK2V4YWN0bWludXNHRiU2JUYkRidGLT5GLS1GYHA2J0YkRlRGJ0Y7Ri0+Ri0tSSpleGFjdHBsdXNHRiU2JkYkRlRGJ0YtRlhGWi1GMjYoRl9vRitJK3AqbG4oTileMj1HRiUtRmZuNiMqJiktRmZvNiNGL0Y/RjtGK0Y7RmpvRi5GLUYlRiVGJQ== twintest(3,20000,400,3..15); NihJLlR3aW50ZXN0O35oMD1HNiIiIiRJI0g9R0YkIiYrKyNJI249R0YkIiQrJQ== STFQcmV0ZXN0fmZvcn5OKy0xRzYi NipJI1A9RzYiIiIpSSNwPUdGJCQiKysrXVVyISM1SStwKmxuKFApXjI9R0YkJCIrKDNzJSkzJCEiKkkmdGltZT1HRiQkIiVaWyEiJA== NipJI1A9RzYiIiM7SSNwPUdGJCQiKysrXVdcISM1SStwKmxuKFApXjI9R0YkJCIrJSkpZjQhUSEiKkkmdGltZT1HRiQkIiUyQyEiJA== NipJI1A9RzYiIiNLSSNwPUdGJCQiKysrXSk0JCEjNUkrcCpsbihQKV4yPUdGJCQiK2ciNDxzJCEiKkkmdGltZT1HRiQkIiVrNSEiJA== NipJI1A9RzYiIiNrSSNwPUdGJCQiKysrK3pBISM1SStwKmxuKFApXjI9R0YkJCIrMyhHPSVSISIqSSZ0aW1lPUdGJCQiJCVvISIk NipJI1A9RzYiIiRHIkkjcD1HRiQkIisrK10wPCEjNUkrcCpsbihQKV4yPUdGJCQiKzo9NzpTISIqSSZ0aW1lPUdGJCQiJCNcISIk NipJI1A9RzYiIiRjI0kjcD1HRiQkIisrKytLOCEjNUkrcCpsbihQKV4yPUdGJCQiK2FldyY0JSEiKkkmdGltZT1HRiQkIiRbJSEiJA== NipJI1A9RzYiIiQ3JkkjcD1HRiQkIisrK11pNSEjNUkrcCpsbihQKV4yPUdGJCQiK18oKSpbOCUhIipJJnRpbWU9R0YkJCIkJFIhIiQ= NipJI1A9RzYiIiVDNUkjcD1HRiQkIisrKytYJykhIzZJK3AqbG4oUCleMj1HRiQkIisxal5gVCEiKkkmdGltZT1HRiQkIiQoUSEiJA== NipJI1A9RzYiIiVbP0kjcD1HRiQkIisrKysmPSghIzZJK3AqbG4oUCleMj1HRiQkIitPaylwPCUhIipJJnRpbWU9R0YkJCIkSCUhIiQ= NipJI1A9RzYiIiUnNCVJI3A9R0YkJCIrKysrWGYhIzZJK3AqbG4oUCleMj1HRiQkIitpQDE4VCEiKkkmdGltZT1HRiQkIiQjXCEiJA== NipJI1A9RzYiIiUjPilJI3A9R0YkJCIrKysrbF4hIzZJK3AqbG4oUCleMj1HRiQkIisiSC1RPiUhIipJJnRpbWU9R0YkJCIkTichIiQ= NipJI1A9RzYiIiYlUTtJI3A9R0YkJCIrKysrSVchIzZJK3AqbG4oUCleMj1HRiQkIitJdW5yVCEiKkkmdGltZT1HRiQkIiQkKSkhIiQ= NipJI1A9RzYiIiZvRiRJI3A9R0YkJCIrKysrZ1EhIzZJK3AqbG4oUCleMj1HRiQkIitGV3RzVCEiKkkmdGltZT1HRiQkIiUvOSEiJA== SS5UZXN0fmZvcn5OKy0xRzYi NihJI3A9RzYiJCIrKysrK10hIzlJK3AqbG4oTileMj1HRiQkIis/SUMsVSEiKkkmdGltZT1HRiQkIiVKOCEiJA== NyMiJjZrIg==
<Text-field style="Heading 2" layout="Heading 2">5.13. Sophie Germain pr<Font encoding="UTF-8">\303\255</Font>mek.</Text-field> # # A pretest will be done for Sophie Germain prime candidates, # to be more exact, for (h0+c*h)*b^n-1 and for (h0+c*h)*b^(n+1)-1, # where h runs from 0 to H-1. All prime divisors from P0 to P1 # will be tried. P0 must be odd, and b,c must have prime factors # smaller then P0. The values h0+c*h, for which (h0+c*h)*b^n-1 and # (h0+c*h)*b^(n+1)-1 are not divisible with primes from P0 to P1 # are given back. # presophie:=proc(h0::nonnegint,H::posint,c::posint,b::posint, n::posint,P0::posint,P1::posint) local T,h,p,hh,L,nn,bb,bbb,cc,bT,cT,i,j; T:=array(0..H-1); for h from 0 to H-1 do T[h]:=1 od; bT:=array(0..b-1); # table of inverses for b for i from 0 to b-1 do bT[i]:=0 od; for i from 0 to b-1 do for j from 0 to b-1 do if irem(i*j+1,b)=0 then bT[i]:=j fi od od; cT:=array(0..c-1); # table of inverses for c for i from 0 to c-1 do cT[i]:=0 od; for i from 0 to c-1 do for j from 0 to c-1 do if irem(i*j+1,c)=0 then cT[i]:=j fi od od; for p from P0 to P1 by 2 do if isprime(p) then cc:=(cT[p mod c]*p+1)/c; nn:=modp(n,p-1); bb:=(bT[modp(p,b)]*p+1)/b; bbb:=modp(bb&^nn,p); hh:=modp((bbb-h0)*cc,p); for h from hh to H-1 by p do T[h]:=0; od; bbb:=modp(bbb*bb,p); hh:=modp((bbb-h0)*cc,p); for h from hh to H-1 by p do T[h]:=0 od fi od; L:=[]; for h from 0 to H-1 do if T[h]=1 then L:=[op(L),h] fi od; L end; Zio2KSdJI2gwRzYiSSpub25uZWdpbnRHJSpwcm90ZWN0ZWRHJ0kiSEdGJkkncG9zaW50R0YoJ0kiY0dGJkYrJ0kiYkdGJkYrJ0kibkdGJkYrJ0kjUDBHRiZGKydJI1AxR0YmRis2L0kiVEdGJkkiaEdGJkkicEdGJkkjaGhHRiZJIkxHRiZJI25uR0YmSSNiYkdGJkkkYmJiR0YmSSNjY0dGJkkjYlRHRiZJI2NUR0YmSSJpR0YmSSJqR0YmRiZGJkMuPkY3LUkmYXJyYXlHRig2IzsiIiEsJkYqIiIiRkwhIiI/KEY4RkpGTEZLSSV0cnVlR0YoPiZGNzYjRjhGTD5GQC1GRzYjO0ZKLCZGL0ZMRkxGTT8oRkJGSkZMRldGTz4mRkA2I0ZCRko/KEZCRkpGTEZXRk8/KEZDRkpGTEZXRk9AJC8tSSVpcmVtR0YoNiQsJiomRkJGTEZDRkxGTEZMRkxGL0ZKPkZaRkM+RkEtRkc2IztGSiwmRi1GTEZMRk0/KEZCRkpGTEZkb0ZPPiZGQUZlbkZKPyhGQkZKRkxGZG9GTz8oRkNGSkZMRmRvRk9AJC8tRltvNiRGXW9GLUZKPkZnb0ZDPyhGOUYzIiIjRjVGT0AkLUkoaXNwcmltZUc2JEYoSShfc3lzbGliR0YmNiNGOUMrPkY/KiYsJiomJkZBNiMtSSRtb2RHRiY2JEY5Ri1GTEY5RkxGTEZMRkxGTEYtRk0+RjwtSSVtb2RwR0YoNiRGMSwmRjlGTEZMRk0+Rj0qJiwmKiYmRkA2Iy1GY3E2JEY5Ri9GTEY5RkxGTEZMRkxGTEYvRk0+Rj4tRmNxNiQtSSMmXkdGJjYkRj1GPEY5PkY6LUZjcTYkKiYsJkY+RkxGJUZNRkxGP0ZMRjk/KEY4RjpGOUZLRk8+RlFGSj5GPi1GY3E2JComRj5GTEY9RkxGOUZkckZpcj5GOzciPyhGOEZKRkxGS0ZPQCQvRlFGTD5GOzckLUkjb3BHRig2I0Y7RjhGO0YmRiZGJg== # # After a pretest the probabilistic test for N-1, the Riesel # test with D=5 and unit (1+sqrt(5))^2/4 for N-1, the # probabilistic test for 2*N-1, and the Riesel test for 2*N-1 # with D=5 and unit (1+sqrt(5))^2/4 is used to find # Sophie Germain primes with N=(h0+30*h)*2^n, where h runs # from 0 to H-1. Only h0=9 and n mod 4=0 used; in this case # the Riesel test can be used and N-1, 2*N-1 is not divisible # by 2,3,5 hence this procedure should be used only with this # pair. All prime divisors until P will be tried during the # pretest. # sophiegermain:=proc(h0,H,n,P) local LL; LL:=presophie(h0,H,30,2,n,7,P); print(nops(LL)); LL:=prob(h0,30,n,-1,LL); print(nops(LL)); LL:=exactminus(h0,n,LL); print(nops(LL)); LL:=prob(h0,30,n+1,-1,LL); print(nops(LL)); LL:=exactminus(h0,n+1,LL); end; Zio2JkkjaDBHNiJJIkhHRiVJIm5HRiVJIlBHRiU2I0kjTExHRiVGJUYlQys+RiotSSpwcmVzb3BoaWVHRiU2KUYkRiYiI0kiIiNGJyIiKEYoLUkmcHJpbnRHJSpwcm90ZWN0ZWRHNiMtSSVub3BzR0Y1Rik+RiotSSVwcm9iR0YlNidGJEYwRichIiJGKkYzPkYqLUkrZXhhY3RtaW51c0dGJTYlRiRGJ0YqRjM+RiotRjs2J0YkRjAsJkYnIiIiRkZGRkY9RipGMz5GKi1GQDYlRiRGRUYqRiVGJUYl sophiegermain(9,20000,400,1000); IiVQPA== IiNw IiNw IiIj NyQiJS5HIiUqRyc=
<Text-field style="Heading 2" layout="Heading 2">5.14. Ikerpr<Font encoding="UTF-8">\303\255</Font>m, amely Sophie Germain pr<Font encoding="UTF-8">\303\255</Font>m is.</Text-field> # # This part contains some special calculations # which are useful for search of primes N # for which N+2 and 2*N+1 are prime too. # We try to find p in the form N=h*2^e-1. # The test given by Riesel works with # discriminnant D if the there are integers # a,b,r such that (a+b*sqrt(D))^2/r is a unit # such that r=|a^2-b^2*D|, (D|N)=-1, # (r|D)(a^2-b^2*D)/r=-1. We are here interested # for the choose D=13, a=3, b=1, r=4. # The test is then applicable for those # N, for which (13|N)=(N|13)=-1 and # (13|2*N+1)=(2*N+1|13)=-1. This gives # the condition h*7^e mod 13 is in {3,6,8}. # In these cases N+2 mod 13 also not 0. # We plan to use the modulus 30030=2*3*5*7*11*13. # Because N, N+2 and 2*N+1 are certainly # not divisible by 2, 3, 5, 7 and 11 if # h divisible by 3, 5, 7 and 11, independently # of the choose of n, we obtain a lot of cases # in which the discriminant D=13 may be used, # as follows: # # e mod 12 =0 : h mod 30030 = 5775,26565,10395 # e mod 12 =1 : h mod 30030 = 10395,5775,12705 # e mod 12 =2 : h mod 30030 = 12705,10395,28875 # e mod 12 =3 : h mod 30030 = 28875,12705,21945 # e mod 12 =4 : h mod 30030 = 21945,28875,3465 # e mod 12 =5 : h mod 30030 = 3465,21945,24255 # e mod 12 =6 : h mod 30030 = 24255,3465,19635 # e mod 12 =7 : h mod 30030 = 19635,24255,17325 # e mod 12 =8 : h mod 30030 = 17325,19635,1155 # e mod 12 =9 : h mod 30030 = 1155,17325,8085 # e mod 12 =10 : h mod 30030 = 8085,1155,26565 # e mod 12 =11 : h mod 30030 = 265775,8085,5775 # # # These where calculated by the following # simple program: # calcsophietwinclasses:=proc() local n,L; L:=[]; for n from 0 to 11 do [n,chrem([1,0,0,0,0,3*7^n mod 13],[2,3,5,7,11,13]), chrem([1,0,0,0,0,6*7^n mod 13],[2,3,5,7,11,13]), chrem([1,0,0,0,0,8*7^n mod 13],[2,3,5,7,11,13])]; L:=[op(L),%]; od; L end; Zio2IjYkSSJuR0YjSSJMR0YjRiNGI0MlPkYmNyI/KEYlIiIhIiIiIiM2SSV0cnVlRyUqcHJvdGVjdGVkR0MkNyZGJS1JJmNocmVtR0YjNiQ3KEYsRitGK0YrRistSSRtb2RHRiM2JCwkKiYiIiRGLCkiIihGJUYsRiwiIzg3KCIiI0Y7IiImRj1GLUY+LUYzNiQ3KEYsRitGK0YrRistRjc2JCwkKiYiIidGLEY8RixGLEY+Rj8tRjM2JDcoRixGK0YrRitGKy1GNzYkLCQqJiIiKUYsRjxGLEYsRj5GPz5GJjckLUkjb3BHRi82I0YmSSIlR0YjRiZGI0YjRiM= # # More generally, such calculations can be done # by the following program, which find all congruence classes # for h for a given discriminant D=5,13,17,29,53 and primes from # the list P, for which h*2^(n+e)+d<>0 mod p and all cases # where d=-1 are appropriate for the Riesel test by D. # List L contains the pairs [e,d]. # classes:=proc(D::posint,n::integer,P::list(posint),L::list) local l,i,ll,r,p,LL,q,x; ll:=ilcm(phi(D),op(map(i->i-1,P))); r:=[i$i=1..D]; for l in L do if l[2]=-1 then r:=remove(x->jacobi(D,x*2^(n+l[1])+l[2])<>-1,r); else r:=select(x->jacobi(D,x*2^(n+l[1])+l[2])<>0,r); fi; od; LL:=[[D,r]]; for p in P do r:=[i$i=0..p-1]; for l in L do r:=select(x->modp(x*2^(n+l[1])+l[2],p)<>0,r) od; LL:=[op(LL),[p,r]]; od; ll,LL end; Zio2JidJIkRHNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJuR0YmSShpbnRlZ2VyR0YoJ0kiUEdGJi1JJWxpc3RHRig2I0YnJ0kiTEdGJkYvNipJImxHRiZJImlHRiZJI2xsR0YmSSJyR0YmSSJwR0YmSSNMTEdGJkkicUdGJkkieEdGJkYmRiZDKD5GNi1JJWlsY21HRiY2JC1fSSpudW10aGVvcnlHNiRGKEkoX3N5c2xpYkdGJkkkcGhpR0YmNiNGJS1JI29wR0YoNiMtSSRtYXBHRig2JGYqNiNGNUYmNiRJKW9wZXJhdG9yR0YmSSZhcnJvd0dGJkYmLCZGNSIiIkZUISIiRiZGJkYmRi0+Rjc3Iy1JIiRHRig2JEY1L0Y1O0ZURiU/JkY0RjJJJXRydWVHRihAJS8mRjQ2IyIiI0ZVPkY3LUkncmVtb3ZlR0YoNiRmKjYjRjtGJkZQRiYwLV9GQ0knamFjb2JpR0YmNiRGJSwmKiZGO0ZUKUZdbywmRipGVCZGNDYjRlRGVEZURlRGW29GVEZVRiZGJjYoRiU5JEYqOSVGNDgkRjc+RjctSSdzZWxlY3RHRig2JGYqRmNvRiZGUEYmMEZlbyIiIUYmRiZGX3BGNz5GOTcjNyRGJUY3PyZGOEYtRmhuQyU+Rjc3Iy1GWTYkRjUvRjU7RmlwLCZGOEZURlRGVT8mRjRGMkZobj5GNy1GZXA2JGYqRmNvRiZGUEYmMC1JJW1vZHBHRig2JEZpb0Y4RmlwRiZGJjYoRipGYXBGNEZicEY4OChGNz5GOTckLUZJNiNGOTckRjhGNzYkRjZGOUYmRiZGJg== classes(5,60000,[2,3,7,11,13],[[0,-1],[1,-1]]); NiQiI2c3KDckIiImNyMiIiU3JCIiIzckIiIhIiIiNyQiIiQ3I0YsNyQiIig3J0YsRipGL0YmIiInNyQiIzY3K0YsRipGL0YoRiZGMiIiKSIiKiIjNTckIiM4Ny1GLEYqRi9GKEYmRjRGOEY5RjpGNiIjNw== chrem([1,0,4],[2,3,5]); IiIq classes(13,1983*128,[2,3,5,7,11],[[0,-1],[1,-1],[0,+1]]); NiQiI2c3KDckIiM4NyUiIiQiIiciIik3JCIiIzckIiIhIiIiNyRGKDcjRi43JCIiJjckRi5GLDckIiIoNyZGLkYsRihGMzckIiM2NypGLkYvRigiIiVGM0YpRjZGKg== chrem([1,0,0,0,0,3],[2,3,5,7,11,13]); IiV2ZA== classes(13,1983*128,[2,3,5,7,11],[[0,-1],[1,+1],[0,+1]]); NiQiI2c3KDckIiM4NyYiIiQiIigiIikiIio3JCIiIzckIiIhIiIiNyRGKDcjRi83JCIiJjckRi9GKDckRik3JkYvRi0iIiVGNDckIiM2NypGL0YoRjhGNCIiJ0YpRioiIzU= chrem([1,0,0,0,0,9],[2,3,5,7,11,13]); IiZEdCI= classes(13,21*2^14-128,[2,3,5,7,11],[[0,-1],[1,-1],[0,+1]]); NiQiI2c3KDckIiM4NyUiIiIiIiMiIig3JEYpNyQiIiFGKDckIiIkNyNGLTckIiImNyRGLUYpNyRGKjcmRi1GKEYyIiInNyQiIzY3KkYtRihGKUYvIiIlRioiIioiIzU= chrem([0,0,0,0,0,1],[2,3,5,7,11,13]); IiVJcA== classes(13,247*128,[2,3,5,7,11,13],[[0,-1],[1,-1],[2,-1]]); NiQiI2c3KTckIiM4NyQiIioiIzY3JCIiIzckIiIhIiIiNyQiIiQ3I0YtNyQiIiY3JEYtRis3JCIiKDcmRi1GMEYzIiInNyRGKTcqRi1GLkYrRjBGOEY2RigiIzU3JEYmNyxGLUYuRitGM0Y4RjZGKEY7RikiIzc= classes(13,273*128,[2,3,5,7,11,13],[[0,-1],[1,-1],[2,-1]]); NiQiI2c3KTckIiM4NyQiIiQiIik3JCIiIzckIiIhIiIiNyRGKDcjRi03JCIiJjckRi1GKzckIiIoNyZGLUYoRjIiIic3JCIjNjcqRi1GLkYrRigiIiVGN0Y1Rik3JEYmNyxGLUYrRihGO0YyRjdGKSIiKkY5IiM3 273*128; IiZXXCQ= chrem([1,0,0,0,0,3],[2,3,5,7,11,13]); IiV2ZA== ee:=273; log[10.](2.)*128*ee; (ee/247)^4.; IiR0Iw== JCIrPCM+PjAiISIm JCIrLkdLI1wiISIq a:=expand((3+1*sqrt(13))^2/4); LCYjIiM2IiIjIiIiKiYjIiIkRiVGJikiIzgjRiZGJUYmRiY= riesel(5110664609396115,34944,11/2,3/2,13); SSV0cnVlRyUqcHJvdGVjdGVkRw== riesel(5110664609396115,34945,11/2,3/2,13); SSV0cnVlRyUqcHJvdGVjdGVkRw== riesel(5110664609396115,34946,11/2,3/2,13); SSV0cnVlRyUqcHJvdGVjdGVkRw== 2; log[2.](%); 2*3; log[2.](%); 2*3*5;log[2.](%); 2*3*5*7; log[2.](%); 2*3*5*7*11; log[2.](%); 2*3*5*7*11*13; log[2.](%); 2*3*5*7*11*13*17; log[2.](%); 2*3*5*7*11*13*17*19; log[2.](%); 2*3*5*7*11*13*17*19*23; log[2.](%); 2*3*5*7*11*13*17*19*23*29; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41*47; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41*47*53; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41*47*53*59; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41*47*53*59*61; log[2.](%); 2*3*5*7*11*13*17*19*23*29*31*37*41*47*53*59*61*67; log[2.](%); IiIj JCIiIiIiIQ== IiIn JCIrLEQnXGUjISIq IiNJ JCIrJ2YhKm8hXCEiKg== IiQ1Iw== JCIrPWJDOXghIio= IiU1Qg== JCIrOXhPPDYhIik= IiZJKyQ= JCIrJm82dVsiISIp Iic1MF4= JCIrcXo6Jyo9ISIp IighcCpwKg== JCIrQDImNEsjISIp IipxRzRCIw== JCIrPHBJdEYhIik= IitJS3Bwaw== JCIrO101ZkshIik= Ii1JLFxnMD8= JCIrWllfYVAhIik= Ii41WzhRMlUo JCIrJSkqcGFGJSEiKQ== IjA1c19qLUQvJA== JCIrJT1ENyJbISIp IjJxKXlkUWkoKkg5 JCIrcFNvbWAhIik= IjM1LEdZa1MoKXl2 JCIrOmhaUmYhIik= IjUhXEUwTCEpcE46WiU= JCIrPy91RmwhIik= IjchKmU2aSwhZXhPd3Mj JCIrYFQiMzcoISIp IjlJWXdoM2h5Um1eRj0= JCIrc0lVRnghIik= chrem([1,3],[2,13]); IiIk classes(13,61*128,[2,3,5,7,11,17],[[0,-1],[1,-1],[2,-1],[3,-1]]); NiQiJFMjNyk3JCIjODcjIiM2NyQiIiM3JCIiISIiIjckIiIkNyNGLDckIiImRjA3JCIiKDcmRixGL0YyIiInNyRGKDcpRixGL0YyRjQiIikiIioiIzU3JCIjPDcvRixGKkYvIiIlRjJGNkY0RjlGO0YoIiM3IiM5IiM7 chrem([1,0,0,11],[2,3,5,13]); IiR2JA== classes(13,30*128,[2,3,5,7,11,17],[[0,-1],[1,-1],[2,-1],[3,-1],[4,-1]]); NiQiJFMjNyk3JCIjODciNyQiIiM3JCIiISIiIjckIiIkNyNGKzckIiImRi83JCIiKDcmRitGLkYxIiInNyQiIzY3KEYrRikiIiVGMSIiKSIjNTckIiM8Ny5GK0YpRi5GOUYxRjVGM0Y6RjtGNyIjNyIjOQ== classes(13,30*128,[2,3,5,7,11,17],[[0,-1],[1,-1],[2,-1],[3,-1]]); NiQiJFMjNyk3JCIjODcjIiIpNyQiIiM3JCIiISIiIjckIiIkNyNGLDckIiImRjA3JCIiKDcmRixGL0YyIiInNyQiIzY3KUYsRioiIiVGMkYoIiIqIiM1NyQiIzw3L0YsRipGL0Y6RjJGNkY0RihGPEY4IiM3IiM5IiM7 classes(17,30*128,[2,3,5,7,11,13],[[4,-1]]); NiQiJFMjNyk3JCIjPDcqIiIjIiIlIiImIiInIiIqIiM1IiM2IiM4NyRGKDckIiIhIiIiNyQiIiQ3JEYyRig3JEYqNyZGMkYoRjVGKTckIiIoNyhGMkYzRihGNUYqRis3JEYuNyxGMkYzRihGNUYpRipGK0Y6IiIpRi03JEYvNy5GMkYzRihGNUYpRipGK0Y6Rj5GLUYuIiM3 chrem([1,0,0,8],[2,3,5,13]); IiRiIw== classes(13,29*64,[2,3,5,7,11,17,19,23,29,31],[[0,-1],[1,-1],[2,-1],[3,-1]]); cl13:=%[2]; NiQiJlNhJjctNyQiIzg3IyIjNjckIiIjNyQiIiEiIiI3JCIiJDcjRiw3JCIiJkYwNyQiIig3JkYsRi9GMiIiJzckRig3KUYsRi1GL0Y2RjQiIioiIzU3JCIjPDcvRixGKkYvIiIlRjJGNkY0IiIpRjpGKCIjNyIjOSIjOzckIiM+NzFGLEYtRipGPkY0Rj9GOUY6RihGJkZBIiM6RkJGPCIjPTckIiNCNzVGLEYvRjJGNkY0RjlGOkYoRkBGJkZBRkZGQkY8RkdGRCIjPyIjQCIjQTckIiNINztGLEYtRipGL0Y+RjJGNkY0Rj9GOUY6RihGQEZBRkZGQkY8RkdGREZLRk0iI0MiI0QiI0YiI0c3JCIjSjc9RixGLUYvRjJGNkY0RjlGOkYoRkBGJkZBRkZGPEZHRkRGS0ZMRk1GSUZRRlIiI0VGU0ZURk8iI0k= Ny03JCIjODcjIiM2NyQiIiM3JCIiISIiIjckIiIkNyNGKjckIiImRi43JCIiKDcmRipGLUYwIiInNyRGJjcpRipGK0YtRjRGMiIiKiIjNTckIiM8Ny9GKkYoRi0iIiVGMEY0RjIiIilGOEYmIiM3IiM5IiM7NyQiIz43MUYqRitGKEY8RjJGPUY3RjhGJkYkRj8iIzpGQEY6IiM9NyQiI0I3NUYqRi1GMEY0RjJGN0Y4RiZGPkYkRj9GREZARjpGRUZCIiM/IiNAIiNBNyQiI0g3O0YqRitGKEYtRjxGMEY0RjJGPUY3RjhGJkY+Rj9GREZARjpGRUZCRklGSyIjQyIjRCIjRiIjRzckIiNKNz1GKkYrRi1GMEY0RjJGN0Y4RiZGPkYkRj9GREY6RkVGQkZJRkpGS0ZHRk9GUCIjRUZRRlJGTSIjSQ== classes(17,29*64,[2,3,5,7,11,13,19,23,29,31],[[4,-1],[5,-1]]); cl17:=%[2]; NiQiJlNhJjctNyQiIzw3JiIiIyIiJiIjNiIjODckRig3JCIiISIiIjckIiIkNyNGLjckRik3JUYuRigiIiU3JCIiKDcnRi5GKEYxRikiIic3JEYqNytGLkYoRjFGNUYpRjciIikiIioiIzU3JEYrNy1GLkYoRjFGNUYpRjlGPEY9Rj5GKiIjNzckIiM+NzNGLkYvRihGMUY1RilGOUY3RjxGPUY+RkFGKyIjOSIjO0YmIiM9NyQiI0I3N0YuRi9GKEYxRjVGKUY3RjxGPUY+RipGK0ZFIiM6RkZGJkZHRkMiIz8iI0AiI0E3JCIjSDc9Ri5GL0YoRjFGNUYpRjlGN0Y8Rj1GPkYqRkFGK0ZFRktGRkYmRkdGQ0ZMRk1GTkZJIiNDIiNFIiNHNyQiI0o3P0YuRihGMUY1RilGOUY3RjxGPUY+RipGQUYrRkVGS0YmRkdGQ0ZMRk1GTkZJRlIiI0RGUyIjRkZURlAiI0k= Ny03JCIjPDcmIiIjIiImIiM2IiM4NyRGJjckIiIhIiIiNyQiIiQ3I0YsNyRGJzclRixGJiIiJTckIiIoNydGLEYmRi9GJyIiJzckRig3K0YsRiZGL0YzRidGNSIiKSIiKiIjNTckRik3LUYsRiZGL0YzRidGN0Y6RjtGPEYoIiM3NyQiIz43M0YsRi1GJkYvRjNGJ0Y3RjVGOkY7RjxGP0YpIiM5IiM7RiQiIz03JCIjQjc3RixGLUYmRi9GM0YnRjVGOkY7RjxGKEYpRkMiIzpGREYkRkVGQSIjPyIjQCIjQTckIiNINz1GLEYtRiZGL0YzRidGN0Y1RjpGO0Y8RihGP0YpRkNGSUZERiRGRUZBRkpGS0ZMRkciI0MiI0UiI0c3JCIjSjc/RixGJkYvRjNGJ0Y3RjVGOkY7RjxGKEY/RilGQ0ZJRiRGRUZBRkpGS0ZMRkdGUCIjREZRIiNGRlJGTiIjSQ== {op(cl13[6][2])}; {op(cl17[6][2])}; % intersect %%; nops(%); PCkiIiEiIiIiIiQiIiciIigiIioiIzU= PCsiIiEiIiMiIiQiIiUiIiYiIigiIikiIioiIzU= PCciIiEiIiQiIigiIioiIzU= IiIm {op(cl13[8][2])}; {op(cl17[8][2])}; % intersect %%; nops(%); PDEiIiEiIiIiIiMiIiUiIigiIikiIioiIzUiIzYiIzgiIzkiIzoiIzsiIzwiIz0= PDMiIiEiIiIiIiMiIiQiIiUiIiYiIiciIigiIikiIioiIzUiIzciIzgiIzkiIzsiIzwiIz0= PC8iIiEiIiIiIiMiIiUiIigiIikiIioiIzUiIzgiIzkiIzsiIzwiIz0= IiM4 {op(cl13[9][2])}; {op(cl17[9][2])}; % intersect %%; nops(%); PDUiIiEiIiQiIiYiIiciIigiIioiIzUiIzYiIzciIzgiIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0AiI0E= PDciIiEiIiIiIiMiIiQiIiUiIiYiIigiIikiIioiIzUiIzYiIzgiIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0AiI0E= PDMiIiEiIiQiIiYiIigiIioiIzUiIzYiIzgiIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0AiI0E= IiM8 {op(cl13[10][2])}; {op(cl17[10][2])}; % intersect %%; nops(%); PDsiIiEiIiIiIiMiIiQiIiUiIiYiIiciIigiIikiIioiIzUiIzYiIzciIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0EiI0MiI0QiI0YiI0c= PD0iIiEiIiIiIiMiIiQiIiUiIiYiIiciIigiIikiIioiIzUiIzYiIzciIzgiIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0AiI0EiI0IiI0MiI0UiI0c= PDkiIiEiIiIiIiMiIiQiIiUiIiYiIiciIigiIikiIioiIzUiIzYiIzciIzkiIzoiIzsiIzwiIz0iIz4iIz8iI0EiI0MiI0c= IiNC {op(cl13[11][2])}; {op(cl17[11][2])}; % intersect %%; nops(%); PD0iIiEiIiIiIiQiIiYiIiciIigiIioiIzUiIzYiIzciIzgiIzkiIzoiIzwiIz0iIz4iIz8iI0AiI0EiI0IiI0MiI0QiI0UiI0YiI0ciI0giI0k= PD8iIiEiIiMiIiQiIiUiIiYiIiciIigiIikiIioiIzUiIzYiIzciIzgiIzkiIzoiIzwiIz0iIz4iIz8iI0AiI0EiI0IiI0MiI0QiI0UiI0YiI0ciI0giI0k= PDwiIiEiIiQiIiYiIiciIigiIioiIzUiIzYiIzciIzgiIzkiIzoiIzwiIz0iIz4iIz8iI0AiI0EiI0IiI0MiI0QiI0UiI0YiI0ciI0giI0k= IiNF classes(17,1983*128,[2,3,5,7,11,13],[[4,-1],[5,-1],[6,-1]]); NiQiJFMjNyk3JCIjPDcjIiM2NyQiIiM3JCIiISIiIjckIiIkNyNGLDckIiImNyRGLEYqNyQiIig3JkYsRi9GMiIiJzckRig3KkYsRi9GMkY3RjUiIikiIioiIzU3JCIjODcsRixGLUYqRi8iIiVGMkY3RjVGOkY8 classes(5,1983*128,[2,3,7,11,13],[[0,-1],[0,+1]]); NiQiI2c3KDckIiImNyMiIiQ3JCIiIzckIiIhIiIiNyRGKDcjRiw3JCIiKDcnRixGKkYoIiIlRiY3JCIjNjcrRixGLUYoRjNGJiIiJ0YxIiIpIiM1NyQiIzg3LUYsRipGKEYzRiZGN0YxRjgiIipGOUY1 classes(5,1983*128,[2,3,7,11,13],[[0,-1],[0,+1],[1,+1]]); NiQiI2c3KDckIiImNyMiIiQ3JCIiIzckIiIhIiIiNyRGKDcjRiw3JCIiKDcmRixGKiIiJUYmNyQiIzY3KkYsRihGM0YmIiInRjEiIikiIzU3JCIjODcsRixGKkYoRjNGJkYxRjgiIipGOUY1 chrem([1,0,3,0,0,0],[2,3,5,7,11,13]); IiUuSQ== classes(5,247*128,[2,3,7,11,13],[[0,+1],[1,+1],[2,+1]]); NiQiI2c3KDckIiImNyQiIiRGJjckIiIjNyQiIiEiIiI3JEYoNyNGLDckIiIoNyZGLEYtRioiIiU3JCIjNjcqRixGLUYqRjNGJiIiKSIiKiIjNTckIiM4NyxGLEYtRipGKEYzIiInRjFGN0Y1IiM3 classes(5,61*128,[2,3,7,11,13,17],[[0,+1],[1,+1],[2,+1],[3,+1]]); NiQiJFMjNyk3JCIiJjcjRiY3JCIiIzckIiIhIiIiNyQiIiQ3I0YrNyQiIig3JkYrRixGKSIiJTckIiM2NylGK0YsRilGLkYzIiInIiIpNyQiIzg3K0YrRixGKUYuRjNGN0YxRjgiIzc3JCIjPDcvRitGLEYuRiZGN0YxIiIqIiM1RjVGPEY6IiM5IiM6 chrem([1,0,0],[2,3,5]); IiM6 classes(5,30*128,[2,3,7,11,13,17,19],[[0,+1],[1,+1],[2,+1],[3,+1],[4,+1]]); NiQiJD8oNyo3JCIiJjcjRiY3JCIiIzckIiIhIiIiNyQiIiQ3I0YrNyQiIig3JkYrRixGKSIiJTckIiM2NyhGK0YsRi4iIidGMSIiKjckIiM4NypGK0YsRilGJkYxRjgiIzVGNTckIiM8Ny5GK0YuRiZGN0YxRjhGPEY1IiM3RjoiIzkiIzo3JCIjPjcwRitGLkYmRjdGMUY4RjVGQEY6RkFGQiIjO0Y+IiM9 classes(5,29*64,[2,3,7,11,13,17,19,23,29,31],[[0,+1],[1,+1],[2,+1],[3,+1],[4,+1],[5,+1]]); NiQiJlNhJjctNyQiIiY3I0YmNyQiIiM3JCIiISIiIjckIiIkNyNGKzckIiIoNyZGK0YsRikiIiU3JCIjNjcnRitGLEYpRjMiIik3JCIjODcpRitGLEYpRi5GM0YxRjc3JCIjPDctRitGLkYmIiInRjEiIzVGNSIjN0Y5IiM5IiM6NyQiIz43L0YrRixGKUYuRiZGPiIiKkY/RjVGQEZCRjwiIz03JCIjQjczRitGLEYpRi5GM0YmRj5GMUY3RkZGP0ZARjlGQSIjO0ZHIiM/NyQiI0g3OUYrRixGJkYxRkZGP0Y1RkBGOUZBRkJGPEZHRkRGTCIjQCIjQUZJIiNDIiNEIiNFIiNGIiNHNyQiI0o3PEYrRixGKUYuRjNGJkY+RjFGN0ZGRj9GNUZARjlGQUZLRjxGR0ZERkxGUEZRRlJGU0ZURlY= classes(17,0,[2,3,5,7,11],[[0,-1]]); NiQiJFMjNyg3JCIjPDcqIiIlIiInIiIoIiIpIiM2IiM3IiM4IiM6NyQiIiM3IyIiITckIiIkNyRGM0YxNyQiIiY3JkYzRjFGNUYoNyRGKjcoRjNGMUY1RihGOEYpNyRGLDcsRjNGMUY1RihGOEYpRipGKyIiKiIjNQ== classes(17,0,[2,3,5,7,11],[[0,-1],[1,-1]]); NiQiJFMjNyg3JCIjPDcmIiIlIiInIiM3IiM6NyQiIiM3IyIiITckIiIkRi43JCIiJjclRi9GLUYoNyQiIig3J0YvRi1GMUYzRik3JCIjNjcrRi9GLUYxRihGM0Y2IiIpIiIqIiM1 classes(17,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1]]); NiQiJFMjNyg3JCIjPDcjIiInNyQiIiM3IyIiITckIiIkRis3JCIiJjckRixGKjckIiIoNyZGLEYuRjBGKDckIiM2NypGLEYqIiIlRjBGMyIiKSIiKiIjNQ== classes(17,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1],[3,-1]]); NiQiJFMjNyg3JCIjPDciNyQiIiM3IyIiITckIiIkRio3JCIiJkYqNyQiIig3JkYrRi1GLyIiJzckIiM2NylGK0YpIiIlRi8iIikiIioiIzU= classes(29,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1],[3,-1]]); NiQiJD8lNyg3JCIjSDcjIiM/NyQiIiM3IyIiITckIiIkRis3JCIiJkYrNyQiIig3JkYsRi5GMCIiJzckIiM2NylGLEYqIiIlRjAiIikiIioiIzU= classes(29,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1],[3,-1],[4,-1]]); NiQiJD8lNyg3JCIjSDciNyQiIiM3IyIiITckIiIkRio3JCIiJkYqNyQiIig3JkYrRi1GLyIiJzckIiM2NyhGK0YpIiIlRi8iIikiIzU= classes(53,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1],[3,-1]]); NiQiJCF5Nyg3JCIjYDcjIiNANyQiIiM3IyIiITckIiIkRis3JCIiJkYrNyQiIig3JkYsRi5GMCIiJzckIiM2NylGLEYqIiIlRjAiIikiIioiIzU= classes(53,0,[2,3,5,7,11],[[0,-1],[1,-1],[2,-1],[3,-1],[4,-1]]); NiQiJCF5Nyg3JCIjYDciNyQiIiM3IyIiITckIiIkRio3JCIiJkYqNyQiIig3JkYrRi1GLyIiJzckIiM2NyhGK0YpIiIlRi8iIikiIzU=
<Text-field style="Heading 2" layout="Heading 2">5.15. n^2+1 es n^4+1 alak<Font encoding="UTF-8">\303\272</Font> pr<Font encoding="UTF-8">\303\255</Font>mek.</Text-field> # # A pretest will be done for prime candidates having the # form n^2+1, to be more exact, for (h0+c*h)^2*b^(2*n)+1, # where h runs from 0 to H-1. All prime divisors from P0 # to P1 will be tried. P0 must be odd, and b,c must # have prime factors smaller then P0. The values h, for # which (h0+c*h)^2*b^(2*n)+1 is not divisible with primes # from P0 to P1 are given back. # presquareplus:=proc(h0,H,c,b,n,P0,P1) local T,h,p,hh,L,nn,bb,bbb,cc,bT,cT,i,j,R,r; T:=array(0..H-1); for h from 0 to H-1 do T[h]:=1 od; bT:=array(0..b-1); # table of inverses for b for i from 0 to b-1 do bT[i]:=0 od; for i from 0 to b-1 do for j from 0 to b-1 do if irem(i*j+1,b)=0 then bT[i]:=j fi od od; cT:=array(0..c-1); # table of inverses for c for i from 0 to c-1 do cT[i]:=0 od; for i from 0 to c-1 do for j from 0 to c-1 do if irem(i*j+1,c)=0 then cT[i]:=j fi od od; for p from P0 to P1 by 2 do if isprime(p) then r:=msqrt(p-1,p); if r<>FAIL then R:=[r,p-r]; cc:=(cT[p mod c]*p+1)/c; nn:=n mod (p-1); bb:=(bT[p mod b]*p+1)/b; bbb:=bb&^nn mod p; for r in R do hh:=(r*bbb-h0)*cc mod p; for h from hh to H-1 by p do T[h]:=0; od; od; fi; fi; od; L:=[]; for h from 0 to H-1 do if T[h]=1 then L:=[op(L),h0+c*h] fi od; L end; Zio2KUkjaDBHNiJJIkhHRiVJImNHRiVJImJHRiVJIm5HRiVJI1AwR0YlSSNQMUdGJTYxSSJUR0YlSSJoR0YlSSJwR0YlSSNoaEdGJUkiTEdGJUkjbm5HRiVJI2JiR0YlSSRiYmJHRiVJI2NjR0YlSSNiVEdGJUkjY1RHRiVJImlHRiVJImpHRiVJIlJHRiVJInJHRiVGJUYlQy4+Ri0tSSZhcnJheUclKnByb3RlY3RlZEc2IzsiIiEsJkYmIiIiRkUhIiI/KEYuRkNGRUZESSV0cnVlR0ZAPiZGLTYjRi5GRT5GNi1GPzYjO0ZDLCZGKEZFRkVGRj8oRjhGQ0ZFRlBGSD4mRjY2I0Y4RkM/KEY4RkNGRUZQRkg/KEY5RkNGRUZQRkhAJC8tSSVpcmVtR0ZANiQsJiomRjhGRUY5RkVGRUZFRkVGKEZDPkZTRjk+RjctRj82IztGQywmRidGRUZFRkY/KEY4RkNGRUZdb0ZIPiZGN0ZURkM/KEY4RkNGRUZdb0ZIPyhGOUZDRkVGXW9GSEAkLy1GWjYkRmZuRidGQz5GYG9GOT8oRi9GKiIiI0YrRkhAJC1JKGlzcHJpbWVHNiRGQEkoX3N5c2xpYkdGJTYjRi9DJD5GOy1fSSpudW10aGVvcnlHRl1wSSZtc3FydEdGJTYkLCZGL0ZFRkVGRkYvQCQwRjtJJUZBSUxHRkBDKD5GOjckRjssJkYvRkVGO0ZGPkY1KiYsJiomJkY3NiMtSSRtb2RHRiU2JEYvRidGRUYvRkVGRUZFRkVGRUYnRkY+RjItRmZxNiRGKUZncD5GMyomLCYqJiZGNjYjLUZmcTYkRi9GKEZFRi9GRUZFRkVGRUZFRihGRj5GNC1GZnE2JC1JIyZeR0YlNiRGM0YyRi8/JkY7RjpGSEMkPkYwLUZmcTYkKiYsJiomRjtGRUY0RkVGRUYkRkZGRUY1RkVGLz8oRi5GMEYvRkRGSD5GSkZDPkYxNyI/KEYuRkNGRUZERkhAJC9GSkZFPkYxNyQtSSNvcEdGQDYjRjEsJkYkRkUqJkYnRkVGLkZFRkVGMUYlRiVGJQ== # # This filter left only those h's from the list L in the # resulting list for which (h0+c*h)^2*2^(2*n)+1 is # probably prime. # squareplusprob:=proc(h0,c,n,L) local LL,h,N; LL:=[]; for h in L do N:=(h0+c*h)^2*2^(2*n)+1; if modp(2&^(N-1),N)=1 then LL:=[op(LL),h] fi od; LL end; Zio2JkkjaDBHNiJJImNHRiVJIm5HRiVJIkxHRiU2JUkjTExHRiVJImhHRiVJIk5HRiVGJUYlQyU+Rio3Ij8mRitGKEkldHJ1ZUclKnByb3RlY3RlZEdDJD5GLCwmKiYpLCZGJCIiIiomRiZGOUYrRjlGOSIiI0Y5KUY7LCQqJkY7RjlGJ0Y5RjlGOUY5RjlGOUAkLy1JJW1vZHBHRjI2JC1JIyZeR0YlNiRGOywmRixGOUY5ISIiRixGOT5GKjckLUkjb3BHRjI2I0YqRitGKkYlRiVGJQ== # # This filter left only those h's from the list L in the # resulting list for which (h0+c*h)^2*2^(2*n)+1 is # prime. # squareplusproth:=proc(h0,c,n,L) local LL,h,N; LL:=[]; for h in L do N:=(h0+c*h)^2*2^(2*n)+1; if proth((h0+c*h)^2,2*n) then LL:=[op(LL),h] fi od; LL end; Zio2JkkjaDBHNiJJImNHRiVJIm5HRiVJIkxHRiU2JUkjTExHRiVJImhHRiVJIk5HRiVGJUYlQyU+Rio3Ij8mRitGKEkldHJ1ZUclKnByb3RlY3RlZEdDJD5GLCwmKiYpLCZGJCIiIiomRiZGOUYrRjlGOSIiI0Y5KUY7LCQqJkY7RjlGJ0Y5RjlGOUY5RjlGOUAkLUkmcHJvdGhHRiU2JCokRjdGOUY9PkYqNyQtSSNvcEdGMjYjRipGK0YqRiVGJUYl # # This is a test to measure densities and times. # First pretests are done for N where # N=(h0+2*h)^2*2^(2*n)+1 and h runs from 0 to H-1. # The pretest is repeated for prime limit P=2^e where # e is integer from the interval eint. The time # and the number of remaining candidates after the pretest # is reported, and p*ln(P) also calculated, where p is the # relative frequency of numbers passed the pretest. The # result of the last pretest became the input of the # probabilistic test for N. The time and the result # of this test is also reported. # squareplustest:=proc(h0,H,n,eint) local e,p,P,L,t,N; print(`Squareplustest; h0=`,h0,`H=`,H,`n=`,n); N:=(h0+H)^2*2^(2*n); print(`Pretest for N`); for e from op(1,eint) to op(2,eint) do P:=2^e; t:=time(); L:=presquareplus(h0,H,2,2,n,3,P); t:=time()-t; p:=evalf(nops(L)/H); print(`P=`,2^e,`p=`,p,`p*ln(P)=`,evalf((ln(P))*p),`time=`,t) od; print(`Probabilistic test for N`); t:=time(); L:=squareplusprob(h0,2,n,L); t:=time()-t; p:=evalf(nops(L)/H); print(`p=`,p,`p*ln(N)=`,evalf((ln(N))*p),`time=`,t); print(`Proth test for N`); t:=time(); L:=squareplusproth(h0,2,n,L); t:=time()-t; p:=evalf(nops(L)/H); print(`p=`,p,`p*ln(N)=`,evalf((ln(N))*p),`time=`,t); L end; Zio2JkkjaDBHNiJJIkhHRiVJIm5HRiVJJWVpbnRHRiU2KEkiZUdGJUkicEdGJUkiUEdGJUkiTEdGJUkidEdGJUkiTkdGJUYlRiVDMy1JJnByaW50RyUqcHJvdGVjdGVkRzYoSTRTcXVhcmVwbHVzdGVzdDt+aDA9R0YlRiRJI0g9R0YlRiZJI249R0YlRic+Ri8qJiksJkYkIiIiRiZGPCIiI0Y8KUY9LCQqJkY9RjxGJ0Y8RjxGPC1GMjYjSS5QcmV0ZXN0fmZvcn5OR0YlPyhGKi1JI29wR0YzNiRGPEYoRjwtRkY2JEY9RihJJXRydWVHRjNDKD5GLClGPUYqPkYuLUkldGltZUdGM0YlPkYtLUkucHJlc3F1YXJlcGx1c0dGJTYpRiRGJkY9Rj1GJyIiJEYsPkYuLCZGT0Y8Ri4hIiI+RistSSZldmFsZkdGMzYjKiYtSSVub3BzR0YzNiNGLUY8RiZGWC1GMjYqSSNQPUdGJUZNSSNwPUdGJUYrSSlwKmxuKFApPUdGJS1GZW42IyomLUkjbG5HNiRGM0koX3N5c2xpYkdGJTYjRixGPEYrRjxJJnRpbWU9R0YlRi4tRjI2I0k5UHJvYmFiaWxpc3RpY350ZXN0fmZvcn5OR0YlRk4+Ri0tSS9zcXVhcmVwbHVzcHJvYkdGJTYmRiRGPUYnRi1GVkZZLUYyNihGXm9GK0kpcCpsbihOKT1HRiUtRmVuNiMqJi1GZG82I0YvRjxGK0Y8RmhvRi4tRjI2I0kxUHJvdGh+dGVzdH5mb3J+TkdGJUZOPkYtLUkwc3F1YXJlcGx1c3Byb3RoR0YlRl9wRlZGWUZgcEYtRiVGJUYl squareplustest(1,20000,1000,2..15); NihJNFNxdWFyZXBsdXN0ZXN0O35oMD1HNiIiIiJJI0g9R0YkIiYrKyNJI249R0YkIiUrNQ== SS5QcmV0ZXN0fmZvcn5ORzYi NipJI1A9RzYiIiIlSSNwPUdGJCQiIiIiIiFJKXAqbG4oUCk9R0YkJCIraFZIJ1EiISIqSSZ0aW1lPUdGJCQiJXQpKiEiJA== NipJI1A9RzYiIiIpSSNwPUdGJCQiKysrKytnISM1SSlwKmxuKFApPUdGJCQiK0RcbVo3ISIqSSZ0aW1lPUdGJCQiJSp5JCEiJA== NipJI1A9RzYiIiM7SSNwPUdGJCQiKysrXXddISM1SSlwKmxuKFApPUdGJCQiK2xZXTI5ISIqSSZ0aW1lPUdGJCQiJVJGISIk NipJI1A9RzYiIiNLSSNwPUdGJCQiKysrK3JUISM1SSlwKmxuKFApPUdGJCQiK1glZWJXIiEiKkkmdGltZT1HRiQkIiVOPiEiJA== NipJI1A9RzYiIiNrSSNwPUdGJCQiKysrXSFcJCEjNUkpcCpsbihQKT1HRiQkIitTImU7WCIhIipJJnRpbWU9R0YkJCIlVTkhIiQ= NipJI1A9RzYiIiRHIkkjcD1HRiQkIisrK11wSSEjNUkpcCpsbihQKT1HRiQkIishcEkkKlsiISIqSSZ0aW1lPUdGJCQiJSE9IiEiJA== NipJI1A9RzYiIiRjI0kjcD1HRiQkIisrK11kRiEjNUkpcCpsbihQKT1HRiQkIishbyMzSDohIipJJnRpbWU9R0YkJCIlPTUhIiQ= NipJI1A9RzYiIiQ3JkkjcD1HRiQkIisrKytdQyEjNUkpcCpsbihQKT1HRiQkIitMJipRRzohIipJJnRpbWU9R0YkJCIkcikhIiQ= NipJI1A9RzYiIiVDNUkjcD1HRiQkIisrK104QSEjNUkpcCpsbihQKT1HRiQkIislRyJHTTohIipJJnRpbWU9R0YkJCIkOSkhIiQ= NipJI1A9RzYiIiVbP0kjcD1HRiQkIisrK102PyEjNUkpcCpsbihQKT1HRiQkIis0QHBMOiEiKkkmdGltZT1HRiQkIiRsKCEiJA== NipJI1A9RzYiIiUnNCVJI3A9R0YkJCIrKysrYz0hIzVJKXAqbG4oUCk9R0YkJCIrLHV4VjohIipJJnRpbWU9R0YkJCIkbCghIiQ= NipJI1A9RzYiIiUjPilJI3A9R0YkJCIrKysrNTwhIzVJKXAqbG4oUCk9R0YkJCIrIz1tM2EiISIqSSZ0aW1lPUdGJCQiJEEpISIk NipJI1A9RzYiIiYlUTtJI3A9R0YkJCIrKytdJmYiISM1SSlwKmxuKFApPUdGJCQiK2RHR1s6ISIqSSZ0aW1lPUdGJCQiJCUpKiEiJA== NipJI1A9RzYiIiZvRiRJI3A9R0YkJCIrKytdJVsiISM1SSlwKmxuKFApPUdGJCQiKyVbbE1hIiEiKkkmdGltZT1HRiQkIiUmUSIhIiQ= STlQcm9iYWJpbGlzdGljfnRlc3R+Zm9yfk5HNiI= NihJI3A9RzYiJCIrKysrK1MhIzhJKXAqbG4oTik9R0YkJCIrWGRTQ2MhIzVJJnRpbWU9R0YkJCInXSIzIiEiJA== STFQcm90aH50ZXN0fmZvcn5ORzYi NihJI3A9RzYiJCIrKysrK1MhIzhJKXAqbG4oTik9R0YkJCIrWGRTQ2MhIzVJJnRpbWU9R0YkJCIkKEghIiQ= NyoiJjRiIiImKnA6IiZcTyMiJioqPSQiJiZ6TCImNGckIiYqPVEiJio+UQ== # # Estimate of the powplusone density Cpowplusone for # polynomial (X*2^n)^(2^e)+1 (n fix) by calculating the product for # primes below x. # Cpowplusone:=proc(e::posint,x::posint) local P,p; P:=2.; p:=nextprime(2); while p<x do if modp(p,2^(e+1))=1 then P:=P*(1-2^e/p)/(1-1/p) else P:=P/(1-1/p) fi; p:=nextprime(p) od; P end; Zio2JCdJImVHNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJ4R0YmRic2JEkiUEdGJkkicEdGJkYmRiZDJj5GLCQiIiMiIiE+Ri0tSSpuZXh0cHJpbWVHNiRGKEkoX3N5c2xpYkdGJjYjRjE/KEYmIiIiRjpGJjJGLUYqQyRAJS8tSSVtb2RwR0YoNiRGLSlGMSwmRiVGOkY6RjpGOj5GLCooRixGOiwmRjpGOiomKUYxRiVGOkYtISIiRklGOiwmRjpGOiokRi1GSUZJRkk+RiwqJkYsRjpGSkZJPkYtLUY1NiNGLUYsRiZGJkYm Cpowplusone(1,10); Cpowplusone(1,100); Cpowplusone(1,1000); Cpowplusone(1,10000); Cpowplusone(1,100000); Cpowplusone(1,1000000); JCIrKysrREUhIio= JCIrXz00LkYhIio= JCIrKm8yNHUjISIq JCIrSl0vVUYhIio= JCIrOjVxV0YhIio= JCIrPDVpWEYhIio= Cpowplusone(2,10); Cpowplusone(2,100); Cpowplusone(2,1000); Cpowplusone(2,10000); Cpowplusone(2,100000); Cpowplusone(2,1000000); JCIrKysrdlYhIio= JCIrP2FAa1whIio= JCIrQ2NnMmAhIio= JCIrInAzYU0mISIq JCIrJ1t5O04mISIq JCIrL0UsZGAhIio= # # This procedure calculate the factor qeAB. # qeAB:=proc(e::posint,A::posint,B::posint) local P,p; P:=1.; p:=nextprime(A-1); while p<B do if modp(p,2^(e+1))=1 then P:=P*(1-2^e/p) fi; p:=nextprime(p) od; P end; Zio2JSdJImVHNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJBR0YmRicnSSJCR0YmRic2JEkiUEdGJkkicEdGJkYmRiZDJj5GLiQiIiIiIiE+Ri8tSSpuZXh0cHJpbWVHNiRGKEkoX3N5c2xpYkdGJjYjLCZGKkYzRjMhIiI/KEYmRjNGM0YmMkYvRixDJEAkLy1JJW1vZHBHRig2JEYvKSIiIywmRiVGM0YzRjNGMz5GLiomRi5GMywmRjNGMyomKUZGRiVGM0YvRjxGPEYzPkYvLUY3NiNGL0YuRiZGJkYm # square plus one prime f:=h->((2*h+1)*2.^(340000.*4))^2+1; g:=h->1/ln(f(h)); Zio2I0kiaEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCYqJiksJiomIiIjIiIiRiRGL0YvRi9GL0YuRi8pKSRGLiIiISomJCInKytNRjNGLyIiJUYvRi5GL0YvRi9GL0YlRiVGJQ== Zio2I0kiaEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlKiQtSSNsbkc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkdGJTYjLUkiZkdGJUYjISIiRiVGJUYl H:=2.^21; evalf(H/6*(g(0)+4*g(H/2)+g(H))); JCIoX3I0IyIiIQ== JCIrKy9LNzYhIio= %*2.745621017; # expected primes JCIrby0sYUkhIio= qeAB(1,3,1000000); JCIrOjd4OjYhIzU= %*(ln(1000000.)/(40*ln(2.))); JCIrQXd3ZmIhIzY= %*H*160*20/3.054010268; # SPU time in sec JCIrNFRxQDchIiI= %/24/3600/16; # time for one Cell blade in days JCIrZidldiQpKSEiKQ== # quad plus one prime f:=h->((2*h+1)*2.^(340000.*2))^4+1; g:=h->1/ln(f(h)); Zio2I0kiaEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCYqJiksJiomIiIjIiIiRiRGL0YvRi9GLyIiJUYvKSkkRi4iIiEqJiQiJysrTUY0Ri9GLkYvRjBGL0YvRi9GL0YlRiVGJQ== Zio2I0kiaEc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlKiQtSSNsbkc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkdGJTYjLUkiZkdGJUYjISIiRiVGJUYl H:=2.^15; evalf(H/6*(g(0)+4*g(H/2)+g(H))); JCImb0YkIiIh JCIrRzMqenQiISM2 %*5.357012604; # expected primes JCIrcihRL0oqISM2 qeAB(2,3,1000000); JCIrQVQqcDwjISM1 %*(ln(1000000.)/(40*ln(2.))); JCIrIXBzWjMiISM1 %*H*160*20/0.09310438771; # SPU time in sec JCIrbjVyQDchIiI= %/24/3600/16; # time for one Cell blade in days JCIrIyoqM3ckKSkhIik=
<Text-field style="Heading 2" layout="Heading 2">5.16. Egy<Font encoding="UTF-8">\303\251</Font>b speci<Font encoding="UTF-8">\303\241</Font>lis alak<Font encoding="UTF-8">\303\272</Font> pr<Font encoding="UTF-8">\303\255</Font>mek.</Text-field> # # Cullen and Woodall numbers: n*2^n+-1; all known below n<=8000000. # x:=20000000; evalf(int(y->2/y/ln(2.)/ln(ln(y)),8000000..x)); IikrKys/ LCYkIil2Jz5ZKiEiKSIiIiomJCIiIUYpRiZeI0YmRiZGJg== # # This procedure calculate the factor qsAB. # qsAB:=proc(s::posint,A::posint,B::posint) local P,p; P:=1.; p:=nextprime(A-1); while p<B do P:=P*(1-s/p); p:=nextprime(p) od; P end; Zio2JSdJInNHNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJBR0YmRicnSSJCR0YmRic2JEkiUEdGJkkicEdGJkYmRiZDJj5GLiQiIiIiIiE+Ri8tSSpuZXh0cHJpbWVHNiRGKEkoX3N5c2xpYkdGJjYjLCZGKkYzRjMhIiI/KEYmRjNGM0YmMkYvRixDJD5GLiomRi5GMywmRjNGMyomRiVGM0YvRjxGPEYzPkYvLUY3NiNGL0YuRiZGJkYm qsAB(1,3,1000000); JCIrOztrRiIpISM2 %*(ln(1000000.)/(50*ln(2.))); # decreasing factor of sieve JCIrQkgkKlJLISM2 %*12000000*160*16*20; # SPU time in sec JCIrKXk5MSo+IiIi %/24/3600/16; # time for one Cell blade in days JCIrKT1xKlI5ISIm # # Primorial numbers: p#+-1; p#><exp(p); record (02.2011): 843301#-1. # Expected number of such primes for +1 and -1, respectively, # up to x is exp(gamma)*ln(x), hence the next expected by # x:=evalf(exp(exp(-gamma)+ln(843301.))); # around this p log[10.](exp(x)); # so many decimal digits x/ln(x)-843301/ln(843301.); # so many to test, without sieve JCIrTyxdeTkhIiQ= JCIrMVgvQGshIiU= JCIrM0wjcEElISIm %*300*128*3; # SPU time in sec JCIrXmNUcFsiIiE= %/24/3600/420; # time for all PS3 in days JCIrOi8pPU0iISIo # # Factorial numbers: n!+-1; n!><n^n/exp(n); record (02.2011): 103040!-1. # Expected number of such primes for +1 and -1, respectively, # up to x is exp(gamma)*ln(x), hence the next expected by # x:=evalf(exp(exp(-gamma)+ln(102030.))); # around this n log[10.](x^x/exp(x)); # so many decimal digits x-103040; # so many to test, without sieve JCIrLCsjKSl5IiEiJQ== JCIrNTstPicpISIl JCIqLCtVZSghIiU= %*300*200; # SPU time in sec JCIrMStfXVgiIiE= %/24/3600/420; # time for all PS3 in days JCIrQzgrYTchIig= # # Primes in arithmetic sequences, 3 primes; record (02.2011): # 1185*2^529445-1539*2^263359+1, d=1185*2^529444-1539*2^263359 # (159382 decimal digits). # evalf(2^64/3/5/7/11/13/17/19/23/29/31); # so many to sieve out (2/1)*(3/2)*(5/4)*(7/6)*(11/10)*(13/12)*(17/16)*(19/18)*(23/22)*(29/28)*(31/30); evalf(%); # so many times more dense JCIrWCM+JlI9ISIi IyIpQkYjbykiKVM1Rjg= JCIrNChwQWEnISIq qsAB(1,32,1000000); JCIrKzhtZUUhIzU= %*(ln(1000000.)/(50*ln(2.))); # decreasing factor of sieve JCIrK2UjKWY1ISM1 1/200000/ln(10.); # natural density of primes having 200000 digits JCIrNUNackAhIzo= %*6.542269709/0.1059825800; 1/%; # increased density and expected tests JCIrZEZXUzghIzg= JCIrJGZALVkoISIn # after 30000000 test we have 400 primes, 80000 pairs, seems to be enough 3000000*160*5; # SPU time in sec IisrKysrQw== %/24/3600/16; evalf(%); # time for one Cell blade in days IyImRGMiIiIq JCIrNjY2TzwhIic= 1/160000/ln(10.); # natural density of primes having 160000 digits JCIrNzBNOUYhIzo= %*6.542269709/0.1059825800; 1/%; # increased density and expected tests JCIrWU1idjshIzg= JCIrdnM8b2YhIic= # after 1800000 test we have 300 primes, 45000 pairs, seems to be enough 1800000*300*12; # SPU time in sec IisrKyshWyc= %/24/3600/420; evalf(%); # time for all PS3 in days IyIlXTciIig= JCIrJ0c5ZHkiISIo # A ten-year jump: 1/310000/ln(10.); # natural density of primes having 310000 digits JCIrVSpcNFMiISM6 %*6.542269709/0.1059825800; 1/%; # increased density and expected tests JCIrKHk8IVsnKSEjOQ== JCIrWlZMYzYhIiY= # after 5800000 test we have 500 primes, 125000 pairs, seems to be enough 5800000*300*24; # SPU time in sec IiwrKytnPCU= %/24/3600/420; evalf(%); # time for all PS3 in days IyImK0QoIiNq JCIrXk96XTYhIic= repunit:=proc(n) local i; for i to n do if isprime((10^i-1)/9) then print(i) fi od; end; Zio2I0kibkc2IjYjSSJpR0YlRiVGJT8oRiciIiJGKUYkSSV0cnVlRyUqcHJvdGVjdGVkR0AkLUkoaXNwcmltZUc2JEYrSShfc3lzbGliR0YlNiMsJiomI0YpIiIqRikpIiM1RidGKUYpRjQhIiItSSZwcmludEdGK0YmRiVGJUYl repunit(1000); IiIj IiM+ IiNC IiQ8JA==
<Text-field style="Heading 2" layout="Heading 2">5.17. K<Font encoding="UTF-8">\303\241</Font>tai egy probl<Font encoding="UTF-8">\303\251</Font>m<Font encoding="UTF-8">\303\241</Font>ja.</Text-field> # # This is a simple procedure to get all the prime pairs (p,q) # for which the quotient (p+1)/(q+1)=n is an integer, # 1<n<=N and 2<q<=Q. The limit Q is supposed to be small # and N is supposed to be large, hence primality testing is used. # The result is a list of pairs; each pair consist of n # and a list of all pairs [p,q] corresponding to this n. # The pairs are in increasing order. # prime_plus_one_quotient:=proc(Q,N) local q,n,p,QQ,LL,LLL; QQ:=[]; for q from 3 by 2 while q<=Q do if isprime(q) then QQ:=[op(QQ),q] fi; od; LL:=[]; for n from 2 while n<=N do LLL:=[]; for q in QQ do p:=n*q+n-1; if isprime(p) then LLL:=[op(LLL),[p,q]] fi; od; LL:=[op(LL),[n,LLL]]; od; LL end; Zio2JEkiUUc2IkkiTkdGJTYoSSJxR0YlSSJuR0YlSSJwR0YlSSNRUUdGJUkjTExHRiVJJExMTEdGJUYlRiVDJz5GKzciPyhGKCIiJCIiI0YlMUYoRiRAJC1JKGlzcHJpbWVHRiU2I0YoPkYrNyQtSSNvcEclKnByb3RlY3RlZEc2I0YrRig+RixGMD8oRilGMyIiIkYlMUYpRiZDJT5GLUYwPyZGKEYrSSV0cnVlR0Y9QyQ+RiosKComRilGQUYoRkFGQUYpRkFGQSEiIkAkLUY3NiNGKj5GLTckLUY8NiNGLTckRipGKD5GLDckLUY8NiNGLDckRilGLUYsRiVGJUYl L:=prime_plus_one_quotient(10,100); N19xNyQiIiM3JDckIiIoIiIkNyQiIzYiIiY3JEYoNyU3JEYqRig3JCIjPEYrNyQiI0JGJzckIiIlNyQ3JEYyRis3JCIjSkYnNyRGKzckNyQiIz5GKDckIiNIRis3JCIiJzckNyRGMkYoNyQiI1pGJzckRic3IzckIiNURis3JCIiKTckNyRGOEYoNyRGREYrNyQiIio3JDckIiNgRis3JCIjckYnNyQiIzU3JDckIiNmRis3JCIjekYnNyRGKjcjNyQiI1ZGKDckIiM3NyQ3JEZERig3JEZURis3JCIjODcjNyQiJC4iRic3JCIjOTcjNyQiIyQpRis3JCIjOjckNyRGWUYoNyQiIyopRis3JCIjOzcjNyQiJEYiRic3JEYwNyQ3JCIjbkYoNyQiJCwiRis3JCIjPTckNyRGVEYoNyQiJDIiRis3JEY8NyQ3JCIkOCJGKzckIiReIkYnNyQiIz83IzckRmVuRig3JCIjQDckNyRGaG9GKDckIiRuIkYnNyQiI0E3IzckIiRKIkYrNyRGMjcjNyQiJFAiRis3JCIjQzcjNyQiJCI+Ric3JCIjRDckNyQiJFwiRis3JCIkKj5GJzckIiNFNyM3JEZjb0YoNyQiI0Y3IzckRl9xRig3JCIjRzckNyRGX3JGKzckIiRCI0YnNyRGPjcjNyQiJHQiRis3JCIjSTckNyQiJHoiRis3JCIkUiNGJzckRjg3IjckIiNLNyQ3JEZjcEYoNyRGXXNGKzckIiNMNyU3JEZkckYoNyQiJCg+Ris3JCIkaiNGJzckIiNNNyM3JCIkciNGJzckIiNONyM3JCIkUiJGKDckIiNPRl91NyQiI1BGX3U3JCIjUTckNyRGZXFGKDckIiRGI0YrNyQiI1I3JDckIiRMI0YrNyQiJDYkRic3JCIjUzcjNyRGXXVGKzckRkg3IzckIiRqIkYoNyQiI1U3JDckRl9yRig3JCIkXiNGKzckRmluNyM3JCIkZCNGKzckIiNXNyM3JEZcdkYrNyQiI1g3JTckRlt1Rig3JCIkcCNGKzckIiRmJEYnNyQiI1k3IzckIiRuJEYnNyRGRDcjNyQiJCJHRis3JCIjWzckNyRGXXNGKDckIiQkUUYnNyQiI1w3IzckIiQkSEYrNyQiI103IzckRmRzRig3JCIjXkZfdTckIiNfNyM3JEZnd0YrNyRGUjckNyQiJDYjRig3JCIkPCRGKzckIiNhNyM3JCIkSiVGJzckIiNiNyM3JCIkUiVGJzckIiNjNyM3JEZidEYoNyQiI2Q3IzckRmB3Rig3JCIjZTckNyQiJFokRis3JCIkaiVGJzckRlk3IzckIiRgJEYrNyQiI2c3JTckRl11Rig3JEZleUYrNyQiJHolRic3JCIjaDcjNyQiJChbRic3JCIjaUZfdTckIiNqNyQ3JEZleEYoNyQiJC4mRic3JCIjazcjNyRGZHpGKzckIiNsNyM3JCIkKlFGKzckIiNtNyM3JEZcdkYoNyRGZ3A3IzckIiQsJUYrNyQiI283IzckRmF2Rig3JCIjcEZfdTckIiNxNyM3JCIkPiVGKzckRlQ3IzckIiQkR0YoNyQiI3M3IzckRl5cbEYrNyQiI3RGX3U3JCIjdTcjNyQiJFYlRis3JCIjdjckNyQiJFwlRis3JCIkKmZGJzckIiN3NyM3JCIkMidGJzckIiN4NyQ3JCIkMiRGKDckIiRoJUYrNyQiI3k3JDckRmd3Rig3JCIkbiVGKzckRmVuNyM3JCIkSidGJzckIiMhKTcjNyRGXV5sRis3JCIjIik3IzckIiRaJ0YnNyQiIyMpNyM3JCIkIlxGKzckRmhvNyM3JCIkSiRGKDckIiMlKTcjNyRGal5sRis3JCIjJik3IzckIiQ0JkYrNyQiIycpRl91NyQiIygpNyQ3JEZgXWxGKDckIiRAJkYrNyQiIykpRl91NyRGXnBGX3U3JCIjISo3JDckRmV5Rig3JCIkPihGJzckIiMiKjcjNyQiJEYoRic3JCIjIyo3IzckRmp5Rig3JCIjJCo3JDckIiRkJkYrNyQiJFYoRic3JCIjJSo3JDckIiRqJkYrNyQiJF4oRic3JCIjJio3JDckIiR6JEYoNyQiJHAmRis3JCIjJyo3IzckRmR6Rig3JCIjKCpGX3U3JCIjKSo3IzckIiQoZUYrNyQiIyoqNyM3JCIkJGZGKzckIiQrIjcjNyRGXGJsRis= # # This routine collect statistics from the results of the # above routine. For all number 0<=m<=M, where M is # the number of odd prime less then Q, the number of those # numbers 1<n<=N given back, for which exactly m solutions # of n=(p+1)/(q+1) is found. L is the list calculated by the # above program. # stat_prime_plus:=proc(Q,L) local q,M,MM,LL; M:=0; for q from 3 by 2 while q<Q do if isprime(q) then M:=M+1 fi; od; MM:=array(0..M); for q from 0 to M do MM[q]:=0; od; for LL in L do MM[nops(LL[2])]:=MM[nops(LL[2])]+1; od; convert(MM,listlist) end; Zio2JEkiUUc2IkkiTEdGJTYmSSJxR0YlSSJNR0YlSSNNTUdGJUkjTExHRiVGJUYlQyg+RikiIiE/KEYoIiIkIiIjRiUyRihGJEAkLUkoaXNwcmltZUc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkdGJTYjRig+RiksJkYpIiIiRjxGPD5GKi1JJmFycmF5R0Y3NiM7Ri5GKT8oRihGLkY8RilJJXRydWVHRjc+JkYqRjlGLj8mRitGJkZDPiZGKjYjLUklbm9wc0dGNzYjJkYrNiNGMSwmRkhGPEY8RjwtSShjb252ZXJ0R0Y3NiRGKkkpbGlzdGxpc3RHRiVGJUYlRiU= stat_prime_plus(10,L); NyYiIzYiI18iI0siIiU=
<Text-field style="Heading 2" layout="Heading 2">5.18. P<Font encoding="UTF-8">\303\251</Font>lda.</Text-field>
<Text-field style="Heading 2" layout="Heading 2">5.19. Feladat.</Text-field> # # This is a simple factorization # procedure using trial division. # The result is a sequence of pairs # [p,e] where the p's are the prime # factors and the e's are the exponents. # The factors are anyway in increasing order. # Only primes <= P are tried, hence the # last "factor" may composite, if # it is greater then P^2; # trialdiv:=proc(n::posint,P::posint) local L,p,i,d,nn; L:=[]; nn:=n; if type(nn,even) and 2<=P then for i from 0 while type(nn,even) do nn:=nn/2; od; L:=[[2,i]]; fi; if nn mod 3=0 and 3<=P then for i from 0 while nn mod 3=0 do nn:=nn/3; od; L:=[op(L),[3,i]]; fi; d:=2; p:=5; while p<=P and nn>=p^2 do if nn mod p=0 then for i from 0 while nn mod p=0 do nn:=nn/p; od; L:=[op(L),[p,i]]; fi; p:=p+d; d:=6-d; od; if nn>1 then L:=[op(L),[nn,1]] fi; L; end; Zio2JCdJIm5HNiJJJ3Bvc2ludEclKnByb3RlY3RlZEcnSSJQR0YmRic2J0kiTEdGJkkicEdGJkkiaUdGJkkiZEdGJkkjbm5HRiZGJkYmQys+Riw3Ij5GMEYlQCQzLUkldHlwZUdGKDYkRjBJJWV2ZW5HRigxIiIjRipDJD8oRi4iIiEiIiJGJkY3PkYwLCQqJiNGQEY8RkBGMEZARkA+Riw3IzckRjxGLkAkMy8tSSRtb2RHRiY2JEYwIiIkRj8xRk5GKkMkPyhGLkY/RkBGJkZKPkYwLCQqJiNGQEZORkBGMEZARkA+Riw3JC1JI29wR0YoNiNGLDckRk5GLj5GL0Y8PkYtIiImPyhGJkZARkBGJjMxRi1GKjEqJClGLUY8RkBGMEMlQCQvLUZMNiRGMEYtRj9DJD8oRi5GP0ZARiZGYW8+RjAqJkYwRkBGLSEiIj5GLDckRlg3JEYtRi4+Ri0sJkYtRkBGL0ZAPkYvLCYiIidGQEYvRmhvQCQyRkBGMD5GLDckRlg3JEYwRkBGLEYmRiZGJg== trialdiv(2^107-2^54+1,1000); NyU3JCIiJiIiIjckIiRkKUYlNyQiPihSYCM+VUVkK21oITRvJ3kkRiU= n0:=%[3][1]; Ij4oUmAjPlVFZCttaCE0byd5JA== modp(3&^(n0-1),n0); IiIi trialdiv(n0-1,1000); Nyc3JCIiI0YkNyQiIz4iIiI3JCIkMiJGJzckIiRgJEYnNyQiOCwkXGdBM1R2cTc+OEYn n1:=%[5][1]; IjgsJFxnQTNUdnE3Pjg= modp(3&^(n1-1),n1); IjgqeTNTTzo/JTNMWUIi trialdiv(n1,100000); NyQ3JCImOD0qIiIiNyQiM3hwPmRPVHZPOUYl n2:=%[2][1]; IjN4cD5kT1R2Tzk= modp(3&^(n2-1),n2); IiIi trialdiv(n2-1,1000); NyY3JCIiIyIiJTckIiIkRiQ3JCIkWiYiIiI3JCIuZGF4S1MjPUYq n3:=%[4][1]; Ii5kYXhLUyM9 modp(3&^(n3-1),n3); Ii5Gc0RfeV8i trialdiv(n3,10000); NyQ3JCIlLjYiIiI3JCIrPjpxYDtGJQ== n4:=%[2][1]; Iis+OnFgOw== modp(3&^(n4-1),n4); IiIi trialdiv(n4-1,1000); Nyg3JCIiIyIiIjckIiIoRiU3JCIjPkYlNyQiI0JGJTckIiRQIkYlNyQiJXQ+RiU= trialdiv(2^107+2^54+1,1000); NyM3JCJCOCx4PmwoZlMiUTgjSG9GZkE7IiIi n5:=%[1][1]; IkI4LHg+bChmUyJROCNIb0ZmQTs= modp(3&^(n5-1),n5); IkEkZWEqKkg8dkpfcC1nJnpUT1Y= trialdiv(2^107+2^54+1,1000000); NyQ3JCInKmVWKSIiIjckIjw8PlwnNCRIeC05JCpSTSM+RiU= n6:=%[2][1]; Ijw8PlwnNCRIeC05JCpSTSM+ modp(3&^(n6-1),n6); IjwnUT4wQE1dO1l2KmVxIj0=
<Text-field style="Heading 2" layout="Heading 2">5.20. Pr<Font encoding="UTF-8">\303\255</Font>msz<Font encoding="UTF-8">\303\241</Font>mk<Font encoding="UTF-8">\303\263</Font>dol<Font encoding="UTF-8">\303\241</Font>s.</Text-field>
<Text-field style="Heading 2" layout="Heading 2">5.21. Feladat.</Text-field> p:=safeprime(1563456788814256178886765661555261342987645321345665432123456788772091275121098761232122333321233434123432123344454321234320948725467845467788859812342365); log[2.](p); q:=safeprime(29841524475159001676561453467890987651234254321456490998767626788182514325678909987236514234154232396587874778993377722004988376667882767156363888377626677728888); log[2.](q); n:=p*q; e:=2876354132453678909987653432123409887635423125; igcdex(e,(p-1)*(q-1),'d'); d; d*e mod (p-1)*(q-1); ImV0ekpPNylmKSl5bmEleVlEKFs0S003S2FXTUJAVkJUVkw3S0xCN0s3dyk0QF5GIjRzKCl5Y003S2FtWDhLWHcpSE1oX2JoY3cnKSl5aEQ5KSl5Y01jIg== JCIrenQqKikzJiEiKA== Ilx1Rk4heW5Fd1ApKVFPY3J3Iyl5bXckKSlcK0F4UCQqKnlaKHllJ1JLVTpNVV5PcykqNCp5Y0s5RD0peUV3dykqNFxjOUthVUJedyk0KnlZYDljdzsrZl5aQzolKUg= JCIrayJlM0wmISIo ImVebExCOEpcUGg+W1AtRnBSbS5rPUVAZUkieW4ocGZNJVFiKEdqQEVjZDFyO0FHcmViNWxbcHltbm9FUExoSjR4IjMjcCNvTlYxXmpHKDNdKnlWIUcleW0hKTM6RDoqPVA7Njkob15KKVswbW9BJVtMYVwuJWZ1Smw2QS0nUmQ0ITQ1V1VQZ3VFaVgqPjVOYCVcTSJ5S3RGKkc2cy9Td1tBIz1DQ1RESFMkZmxZ Ik9ESlVOdykpNE03S01sKCkqNCp5T1hLVE53Rw== IiIi IWVebEpRWytVOSpvSzIzZyYpekp2P0Z0O0RsLzc1IW9WUHJvOlsncE8tVWUqMyk0Q0s9ZGxIOjNYXEJNOnlpLStrOFNeJypbPiNmJyo+cipIW1UqZmRNS3NCMmVyJCp5JlEnb05GQlQzS1xAI29TL2tNVXAneTw7KFwxUydIQjolZWEkRzEjPU9eN24/YiV5JykpPmtANihcSipSI3ooKltMOl1zRGQ2bVAnR3lDaUhyJj4= IiIi
<Text-field style="Heading 2" layout="Heading 2">5.22. Feladat.</Text-field> M:="Mint v\303\255z alatti, elmer\303\274lt harangok hint\303\241znak-e hajnalonk\303\251nt \303\241gyadn\303\241l a tizennyolc \303\251ves iskol\303\241sok kiket felakasztatt\303\241l"; convert(M,'bytes'); m:=sum(%[i]*256^(i-1),i=1..nops(%)); c:=m&^e mod n; UVx0TWludH5gdnxed3xodXpgfmFsYXR0aSx+YGVsbWVyfF53fGd2bHRgfmhhcmFuZ29rfCt8K2BoaW50fF53fFx1em5ha2AtZX5gaGFqbmFsb25rfF53fGR1bnRgfmB8Xnd8XHVneWFkbnxed3xcdWxgfCt8K2F+dGl6ZW5ueW9sY35gfF53fGR1dmVzYH5gaXNrb2x8Xnd8XHVzb2tgfCt8K2tpa2V0fmBmZWxha2FzenRhdHR8Xnd8XHVsYDYi N11zIiN4IiQwIiIkNSIiJDsiIiNLIiQ9IiIkJj4iJHQiIiRBIkYnIiMoKiIkMyJGLEYmRiZGJCIjV0YnIiQsIkYtIiQ0IkYvIiQ5IkYpIiQpPUYtRiZGJyIkLyJGLEYxRixGJSIkLiIiJDYiIiQyIiIjNUY3RjNGJEYlRiZGKSIkaCJGK0YlRixGNiIjWEYvRidGM0YsIiQxIkYlRixGLUY1RiVGNkYpIiRwIkYlRiZGJ0YpRjhGNCIkQCJGLCIkKyJGJUYpRjhGLUY3RjdGLEYnRiZGJEYrRi9GJUYlRjxGNUYtIiMqKkYnRilGO0YoRi8iJDoiRidGJEY/RjZGNUYtRilGOEY/RjVGNkY3RjdGNkYkRjZGL0YmRiciJC0iRi9GLUYsRjZGLEY/RitGJkYsRiZGJkYpRjhGLQ== ImJebCQqKT1jbCJ6JilvaDdJbCp6cUpuIilcYFtSeFZ4W3BmRmAoNHlcJipbIWZ3Kls1NClvREo6IXB4I3lyLUR6JG9AW2IzPEpTKlEiKj5BdTVHNm4qZiUpPl1ETkRKUSJmSVdmNFkoPmlvYSpHRU90XTUzRylIeWEiW3glUkpjLGFxYE4zQ3lWdWghcDZBdDdFQjZAVFkleSpRI2VNI1JnNCo9NnVTMDYxQ1krb0cmPg== LUklbW9kcEclKnByb3RlY3RlZEc2JC1JIyZeRzYiNiQiYl5sJCopPWNsInomKW9oN0lsKnpxSm4iKVxgW1J4VnhbcGZGYCg0eVwmKlshZncqWzU0KW9ESjohcHgjeXItRHokb0BbYjM8SlMqUSIqPkF1NUc2bipmJSk+XUROREpRImZJV2Y0WSg+aW9hKkdFT3RdNTNHKUh5YSJbeCVSSmMsYXFgTjNDeVZ1aCFwNkF0N0VCNkBUWSV5KlEjZU0jUmc0Kj02dVMwNjFDWStvRyY+SSJlR0YoSSJuR0Yo c&^d mod n; convert(%,base,256); convert(%,'bytes'); ImJebCQqKT1jbCJ6JilvaDdJbCp6cUpuIilcYFtSeFZ4W3BmRmAoNHlcJipbIWZ3Kls1NClvREo6IXB4I3lyLUR6JG9AW2IzPEpTKlEiKj5BdTVHNm4qZiUpPl1ETkRKUSJmSVdmNFkoPmlvYSpHRU90XTUzRylIeWEiW3glUkpjLGFxYE4zQ3lWdWghcDZBdDdFQjZAVFkleSpRI2VNI1JnNCo9NnVTMDYxQ1krb0cmPg== N11zIiN4IiQwIiIkNSIiJDsiIiNLIiQ9IiIkJj4iJHQiIiRBIkYnIiMoKiIkMyJGLEYmRiZGJCIjV0YnIiQsIkYtIiQ0IkYvIiQ5IkYpIiQpPUYtRiZGJyIkLyJGLEYxRixGJSIkLiIiJDYiIiQyIiIjNUY3RjNGJEYlRiZGKSIkaCJGK0YlRixGNiIjWEYvRidGM0YsIiQxIkYlRixGLUY1RiVGNkYpIiRwIkYlRiZGJ0YpRjhGNCIkQCJGLCIkKyJGJUYpRjhGLUY3RjdGLEYnRiZGJEYrRi9GJUYlRjxGNUYtIiMqKkYnRilGO0YoRi8iJDoiRidGJEY/RjZGNUYtRilGOEY/RjVGNkY3RjdGNkYkRjZGL0YmRiciJC0iRi9GLUYsRjZGLEY/RitGJkYsRiZGJkYpRjhGLQ== UVx0TWludH5gdnxed3xodXpgfmFsYXR0aSx+YGVsbWVyfF53fGd2bHRgfmhhcmFuZ29rfCt8K2BoaW50fF53fFx1em5ha2AtZX5gaGFqbmFsb25rfF53fGR1bnRgfmB8Xnd8XHVneWFkbnxed3xcdWxgfCt8K2F+dGl6ZW5ueW9sY35gfF53fGR1dmVzYH5gaXNrb2x8Xnd8XHVzb2tgfCt8K2tpa2V0fmBmZWxha2FzenRhdHR8Xnd8XHVsYDYi # # This simple procedure generates a pair of safe primes p and q # congruent 3 mod 4, and calculates the product n=p*q, # a Blum integer. The output is a sequence of these numbers # in this order. The input is two large numbers, these are the # starting points for the search for p and q, respectively. # For example, 100 and 104 digit starting points may be used. # The best to choose them randomly and independently. # setBlum:=proc(p0,q0) local p,q,n,e,d,k; p:=safeprime(p0); while p mod 4 <> 3 do p:=safeprime(p) od; q:=safeprime(q0); while q mod 4 <> 3 do q:=safeprime(q) od; n:=p*q; p,q,n; end; Zio2JEkjcDBHNiJJI3EwR0YlNihJInBHRiVJInFHRiVJIm5HRiVJImVHRiVJImRHRiVJImtHRiVGJUYlQyg+RigtX0kqbnVtdGhlb3J5RzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlSSpzYWZlcHJpbWVHRiU2I0YkPyhGJSIiIkY5RiUwLUkkbW9kR0YlNiRGKCIiJSIiJD5GKC1GMTYjRig+RiktRjE2I0YmPyhGJUY5RjlGJTAtRjw2JEYpRj5GPz5GKS1GMTYjRik+RioqJkYoRjlGKUY5NiVGKEYpRipGJUYlRiU= # # This inner routine make the encryption and decryption # for an arbitrary texts. Here n is the Blum integer, # L is the text, x0 is the first quadratic residue, # k is the number of bits used in one step. # Blumi:=proc(n,L,x0,k) local xi,b,i,j,nL; nL:=[]; xi:=x0; for i from 0 to nops(L)/k-1 do b:=convert(xi mod 2^k,base,2); for j to k do if nops(b)>j then nL:=[op(nL),L[i*k+j]+b[j] mod 2] else nL:=[op(nL),L[i*k+j]] fi od; xi:=xi &^ 2 mod n; od; xi,nL end; Zio2Jkkibkc2IkkiTEdGJUkjeDBHRiVJImtHRiU2J0kjeGlHRiVJImJHRiVJImlHRiVJImpHRiVJI25MR0YlRiVGJUMmPkYuNyI+RipGJz8oRiwiIiEiIiIsJiomLUklbm9wc0clKnByb3RlY3RlZEc2I0YmRjVGKCEiIkY1RjVGPEkldHJ1ZUdGOkMlPkYrLUkoY29udmVydEdGOjYlLUkkbW9kR0YlNiRGKikiIiNGKEklYmFzZUdGJUZHPyhGLUY1RjVGKEY9QCUyRi0tRjk2I0YrPkYuNyQtSSNvcEdGOjYjRi4tRkQ2JCwmJkYmNiMsJiomRixGNUYoRjVGNUYtRjVGNSZGKzYjRi1GNUZHPkYuNyRGUEZWPkYqLUZENiQtSSMmXkdGJTYkRipGR0YkNiRGKkYuRiVGJUYl # # This make the encryption for arbitrary texts. # Here n is the Blum integer, L is the text, x is the # random number to generate the first quadratic residue, # k is the number of bits used in one step. # Blume:=proc(n,x,L,k) local pt,i,j,nL; if igcd(x,n)>1 then ERROR(`x is not relative prime to n`) fi; convert(L,'bytes'); pt:=sum(%[i]*256^(i-1),i=1..nops(%)); pt:=convert(pt,base,2); if k>1 then pmod(nops(pt),k); if %<>0 then pt:=[op(pt),0$i=1..k-%] fi; fi; Blumi(n,pt,x &^ 2 mod n,k) end; Zio2Jkkibkc2IkkieEdGJUkiTEdGJUkia0dGJTYmSSNwdEdGJUkiaUdGJUkiakdGJUkjbkxHRiVGJUYlQyhAJDIiIiItSSVpZ2NkRyUqcHJvdGVjdGVkRzYkRiZGJC1JJkVSUk9SR0Y0NiNJPXh+aXN+bm90fnJlbGF0aXZlfnByaW1lfnRvfm5HRiUtSShjb252ZXJ0R0Y0NiRGJy5JJmJ5dGVzR0YlPkYqLUkkc3VtRzYkRjRJKF9zeXNsaWJHRiU2JComJkkiJUdGJTYjRitGMSkiJGMjLCZGK0YxRjEhIiJGMS9GKztGMS1JJW5vcHNHRjQ2I0ZHPkYqLUY7NiVGKkklYmFzZUdGJSIiI0AkMkYxRihDJC1JJXBtb2RHRiU2JC1GUDYjRipGKEAkMEZHIiIhPkYqNyQtSSNvcEdGNEZobi1JIiRHRjQ2JEZbby9GKztGMSwmRihGMUZHRkwtSSZCbHVtaUdGJTYmRiRGKi1JJG1vZEdGJTYkLUkjJl5HRiU2JEYmRlZGJEYoRiVGJUYl # # This make the decryption for arbitrary texts. # Here p and q are the primes, x is the last quadratic residue, # L is the string, and k is the number of bits used in one step. # Blumd:=proc(p,q,x,L,k) local a,b,u,v,i,n,t,nL; igcdex(p,q,'a','b'); t:=nops(L); u:=x &^ (((p+1)/4) &^ t mod (p-1)) mod p; v:=x &^ (((q+1)/4) &^ t mod (q-1)) mod q; nL:=Blumi(p*q,L,a*u+b*v mod p*q,k)[2]; n:=0; for i from t to 1 by -1 do n:=n+n+nL[i]; od; convert (convert(n,base,256),'bytes'); end; Zio2J0kicEc2IkkicUdGJUkieEdGJUkiTEdGJUkia0dGJTYqSSJhR0YlSSJiR0YlSSJ1R0YlSSJ2R0YlSSJpR0YlSSJuR0YlSSJ0R0YlSSNuTEdGJUYlRiVDKi1JJ2lnY2RleEdGJTYmRiRGJi5GKy5GLD5GMS1JJW5vcHNHJSpwcm90ZWN0ZWRHNiNGKD5GLS1JJG1vZEdGJTYkLUkjJl5HRiU2JEYnLUZANiQtRkM2JCwmKiYjIiIiIiIlRkxGJEZMRkxGS0ZMRjEsJkYkRkxGTCEiIkYkPkYuLUZANiQtRkM2JEYnLUZANiQtRkM2JCwmKiZGS0ZMRiZGTEZMRktGTEYxLCZGJkZMRkxGT0YmPkYyJi1JJkJsdW1pR0YlNiYqJkYkRkxGJkZMRigtRkA2JCwmKiZGK0ZMRi1GTEZMKiZGLEZMRi5GTEZMRltvRik2IyIiIz5GMCIiIT8oRi9GMUZPRkxJJXRydWVHRjw+RjAsJiomRmJvRkxGMEZMRkwmRjI2I0YvRkwtSShjb252ZXJ0R0Y8NiQtRl1wNiVGMEklYmFzZUdGJSIkYyMuSSZieXRlc0dGJUYlRiVGJQ== p,q,n:=setBlum(10^100,10^104); NiUiYHFCUC8rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyIiZHEkeVMrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrNSJodzReOiR5LCsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrSXlxc1YrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKzU= x,L:=Blume(n,55555,M,1); NiQiZ3dDJlF5XEAoeShHaSdSUmUieS5nYnciKlxsXTkkeXdoPSdcPF9rYmcrIWVKIkdJaSI+ajZfKXopeU1xVEhKSlxWbUxINXZ1XGdzKkcoPlAyZChldSwjM2socENHSm5tJlIhKUhTTGpFdHJXO2hRSWdWPTdjW28iIiIiIiFGJUYlRiZGJkYlRiZGJUYmRiZGJUYmRiVGJUYmRiZGJUYlRiVGJkYlRiVGJkYmRiZGJUYmRiVGJUYlRiZGJkYmRiZGJkYmRiVGJkYmRiZGJUYlRiZGJUYlRiVGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiVGJUYmRiVGJkYlRiZGJUYmRiVGJUYlRiVGJkYmRiZGJkYmRiZGJUYmRiZGJUYmRiZGJkYmRiVGJUYmRiZGJkYlRiVGJkYlRiVGJkYlRiZGJkYmRiZGJUYlRiZGJkYmRiVGJkYlRiVGJUYmRiZGJkYlRiZGJUYlRiVGJkYlRiZGJkYlRiZGJUYlRiZGJkYmRiVGJUYmRiVGJkYmRiZGJkYmRiZGJkYlRiZGJkYlRiZGJUYmRiZGJUYlRiZGJkYmRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYlRiVGJkYlRiZGJUYmRiZGJUYlRiZGJkYlRiZGJkYlRiVGJUYmRiVGJUYmRiZGJkYmRiVGJUYmRiZGJUYlRiVGJUYmRiVGJkYmRiVGJUYmRiVGJUYmRiZGJkYlRiZGJUYlRiVGJkYmRiZGJkYmRiZGJUYmRiZGJkYmRiZGJUYmRiVGJUYmRiVGJkYmRiZGJkYlRiVGJkYmRiVGJkYmRiVGJUYlRiZGJUYmRiZGJkYmRiVGJUYmRiZGJUYlRiVGJkYlRiVGJkYlRiVGJUYmRiZGJUYlRiZGJUYlRiVGJUYmRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYmRiVGJkYlRiZGJkYmRiZGJkYlRiZGJUYmRiZGJkYmRiZGJkYmRiVGJkYlRiVGJkYlRiZGJkYlRiZGJUYlRiZGJkYlRiVGJUYmRiVGJUYmRiZGJkYlRiZGJUYlRiVGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiZGJkYmRiVGJkYlRiZGJUYmRiVGJUYlRiVGJkYmRiVGJUYlRiZGJUYlRiZGJUYmRiZGJkYmRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYlRiZGJUYlRiZGJUYmRiZGJUYmRiVGJkYmRiVGJUYmRiZGJkYmRiZGJkYlRiZGJkYmRiZGJkYlRiZGJUYlRiZGJUYmRiZGJkYmRiVGJUYmRiZGJUYmRiVGJkYlRiVGJkYmRiVGJUYlRiZGJUYlRiZGJUYmRiZGJkYmRiVGJUYmRiZGJkYlRiVGJkYlRiVGJkYlRiVGJUYlRiZGJUYlRiZGJkYlRiVGJUYmRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiZGJUYmRiVGJkYlRiZGJUYlRiVGJkYlRiVGJkYmRiZGJUYmRiVGJUYlRiZGJkYmRiZGJkYmRiVGJkYmRiVGJUYmRiZGJkYmRiVGJUYlRiZGJkYmRiZGJUYmRiVGJUYlRiVGJkYmRiVGJUYmRiVGJkYmRiVGJUYlRiVGJkYlRiZGJkYmRiZGJUYlRiZGJkYmRiVGJkYmRiVGJUYmRiZGJUYlRiVGJkYlRiVGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiZGJkYmRiVGJkYlRiZGJkYlRiVGJkYlRiVGJkYmRiVGJkYlRiZGJkYmRiZGJkYlRiZGJUYmRiZGJkYmRiVGJkYmRiZGJkYlRiVGJkYmRiZGJkYmRiZGJUYmRiZGJkYmRiVGJkYlRiVGJUYmRiVGJkYmRiVGJkYlRiVGJkYmRiVGJkYlRiVGJUYlRiZGJUYmRiVGJkYmRiVGJUYmRiZGJUYlRiVGJkYlRiVGJkYmRiVGJUYlRiZGJUYlRiZGJUYmRiZGJUYlRiVGJUYmRiVGJUYlRiVGJkYlRiVGJkYmRiZGJUYlRiZGJUYlRiZGJUYlRiZGJkYmRiVGJUYmRiZGJkYmRiZGJkYlRiZGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiZGJUYmRiVGJkYlRiZGJUYlRiZGJUYlRiVGJkYlRiZGJUYmRiZGJUYlRiZGJUYlRiZGJkYlRiVGJUYmRiZGJkYmRiZGJkYlRiZGJkYlRiZGJkYlRiZGJUYlRiZGJUYlRiZGJkYlRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYlRiVGJUYlRiZGJUYlRiZGJkYmRiVGJUYmRiVGJUYmRiVGJUYmRiZGJkYmRiVGJUYlRiZGJkYmRiZGJUYmRiVGJUYlRiZGJkYlRiVGJUYmRiVGJUYlRiVGJkYlRiVGJkYlRiVGJkYlRiZGJUYlRiZGJkYlRiZGJUYmRiZGJkYmRiZGJUYmRiVGJkYmRiZGJkYlRiVGJkYlRiZGJUYlRiZGJUYmRiZGJUYmRiVGJUYmRiVGJUYmRiVGJkYlRiVGJkYlRiZGJUYmRiZGJUYlRiZGJkYmRiVGJkYlRiVGJUYmRiZGJkYmRiZGJkYlRiZGJkYmRiVGJUYmRiZGJUYlRiZGJUYmRiVGJkYmRiVGJUYmRiZGJkYlRiVGJkYlRiVGJkYlRiZGJkYmRiZGJUYlRiZGJUYlRiZGJUYmRiVGJUYmRiVGJkYmRiZGJkYlRiVGJkYlRiVGJkYmRiVGJUYlRiZGJkYlRiZGJUYlRiVGJUYmRiZGJkYlRiZGJUYlRiVGJkYlRiZGJkYmRiZGJUYlRiZGJkYmRiVGJkYlRiVGJUYmRiZGJkYlRiZGJUYlRiVGJkYlRiVGJkYmRiZGJkYlRiVGJUYmRiZGJkYmRiVGJkYlRiZGJkYlRiVGJkYlRiU= Blumd(p,q,x,L,1); UVx0TWludH5gdnxed3xodXpgfmFsYXR0aSx+YGVsbWVyfF53fGd2bHRgfmhhcmFuZ29rfCt8K2BoaW50fF53fFx1em5ha2AtZX5gaGFqbmFsb25rfF53fGR1bnRgfmB8Xnd8XHVneWFkbnxed3xcdWxgfCt8K2F+dGl6ZW5ueW9sY35gfF53fGR1dmVzYH5gaXNrb2x8Xnd8XHVzb2tgfCt8K2tpa2V0fmBmZWxha2FzenRhdHR8Xnd8XHVsYDYi # # This simple procedure generates a safe prime q, and a generator # g of the reduced residue classes. For the given exponent d, # calculates e=g^d mod q. The output is a sequence # of the numbers [q,g,e,d] in this order. The input is # three large numbers, these are the starting points for the search # for q and e, respectively, and the exponent d. # For example, 200 digit starting points may be used. # The best to choose them randomly and independently. # setElGamal:=proc(q0,g0,d) local f,p,q,g,e,P; q:=safeprime(q0); P:=factorset(q-1); f:=false; g:=g0; while not f do f:=true; for p in P while f=true do if modp(g &^ ((q-1)/p),q) = 1 then f:=false; g:=g+1 fi od; od; e:=modp(g &^ d,q); [q,g,e,d]; end; Zio2JUkjcTBHNiJJI2cwR0YlSSJkR0YlNihJImZHRiVJInBHRiVJInFHRiVJImdHRiVJImVHRiVJIlBHRiVGJUYlQyk+RistX0kqbnVtdGhlb3J5RzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YlSSpzYWZlcHJpbWVHRiU2I0YkPkYuLV9GM0kqZmFjdG9yc2V0R0YlNiMsJkYrIiIiRj8hIiI+RilJJmZhbHNlR0Y1PkYsRiY/KEYlRj9GP0YlNEYpQyQ+RilJJXRydWVHRjU/JkYqRi4vRilGSEAkLy1JJW1vZHBHRjU2JC1JIyZeR0YlNiRGLComRj5GP0YqRkBGK0Y/QyRGQT5GLCwmRixGP0Y/Rj8+Ri0tRk42JC1GUTYkRixGJ0YrNyZGK0YsRi1GJ0YlRiVGJQ== # # This make the encryption for short texts. Here q is the modulus, # g is the generator, e the encryption exponent, k the random # exponent, L the text. # ElGamale:=proc(q,g,e,k,L) convert(L,'bytes'); modp(g &^ k,q),modp(sum(%[i]*256^(i-1),i=1..nops(%))*(e &^ k),q) end; Zio2J0kicUc2IkkiZ0dGJUkiZUdGJUkia0dGJUkiTEdGJUYlRiVGJUMkLUkoY29udmVydEclKnByb3RlY3RlZEc2JEYpLkkmYnl0ZXNHRiU2JC1JJW1vZHBHRi02JC1JIyZeR0YlNiRGJkYoRiQtRjM2JComLUkkc3VtRzYkRi1JKF9zeXNsaWJHRiU2JComJkkiJUdGJTYjSSJpR0YlIiIiKSIkYyMsJkZERkVGRSEiIkZFL0ZEO0ZFLUklbm9wc0dGLTYjRkJGRS1GNjYkRidGKEZFRiRGJUYlRiU= # # This make the decryption for short texts. Here q is the modulus, # d the decryption exponent, x the number. # ElGamald:=proc(q,g,d,x,y) convert(convert(modp((x &^ (q-d-1))*y,q),base,256),'bytes'); end; Zio2J0kicUc2IkkiZ0dGJUkiZEdGJUkieEdGJUkieUdGJUYlRiVGJS1JKGNvbnZlcnRHJSpwcm90ZWN0ZWRHNiQtRis2JS1JJW1vZHBHRiw2JComLUkjJl5HRiU2JEYoLChGJCIiIkYnISIiRjhGOUY4RilGOEYkSSViYXNlR0YlIiRjIy5JJmJ5dGVzR0YlRiVGJUYl L:=setElGamal(10^200,2*10^199,3*10^199); q:=L[1]; g:=L[2]; e:=L[3]; d:=L[4]; NyYiZHdaQmorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrIiJjdysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKz8iY3dIOGZSVnpxSUdiYF45JHpdckNUbWBRbXVSd0opPXFFcF8uNCw0JjNuT3kiej53KzUieW12LHBgPXdzSFEzSCVHQiNwbzkjUXgteF9UPmklW1hwODNKPSY+P0c2bj8hZm5QJHo6JnlAWTJXJiJjdysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrK0k= ImR3WkJqKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyI= ImN3KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrPw== ImN3SDhmUlZ6cUlHYmBeOSR6XXJDVG1gUW11UndKKT1xRXBfLjQsNCYzbk95Ino+dys1InltdixwYD13c0hRM0glR0IjcG85I1F4LXhfVD5pJVtYcDgzSj0mPj9HNm4/IWZuUCR6OiZ5QFkyVyY= ImN3KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrSQ== LL:=ElGamale(q,g,e,5555,M[1..36]); NiQiY3cmel82bSFSTGkyWWslSHlfVCYqcGNeLngnMzl5eG81TnRcdFRRaTBBRDQzVjFyKCopM2khejRUPnNZLidldWg+SSMqSDsiSGVRVUw3W3lVJTN2XyE9RjZkJHlybCRwVjk6aV0ybWAoWyJbJHBsXiciY3d1KD1qKWZLclwuZVlLNyIpNEJ6KTNpXFlieUYlR2BfKCpmTWskPkIzWnJOZFsvKVtTUVQ8Qzhbd0MySjpeLy15M2hTM10mM1drWFdVUmhILV1VeCRHJG9JN1MhNHYnKSlvU3ZMNEhBKlIlR3FuJg== ElGamald(q,g,d,LL[1],LL[2]); UUlNaW50fmB2fF53fGh1emB+YWxhdHRpLH5gZWxtZXJ8Xnd8Z3ZsdGB+aGFyYW5nb2s2Ig== debug(ElGamal);
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">6. Sz\303\241mok \303\251s polinomok</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">7. Gyors Fourier-transzform\303\241ci\303\263</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">8. Elliptikus f\303\274ggv\303\251nyek</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">9. Sz\303\241mol\303\241s elliptikus g\303\266rb\303\251ken</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">10. Faktoriz\303\241l\303\241s elliptikus g\303\266rb\303\251kkel</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">11. Pr\303\255mteszt elliptikus g\303\266rb\303\251kkel</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">12. Polinomfaktoriz\303\241l\303\241s</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1">13. Az AKS-teszt</Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">14. A szita m\303\263dszerek alapjai</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">15. Sz\303\241mtest szita</Font></Text-field>
<Text-field style="Heading 1" layout="Heading 1">16. Vegyes probl<Font encoding="UTF-8">\303\251</Font>m<Font encoding="UTF-8">\303\241</Font>k</Text-field>
LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn