Pan base non-primes: Difference between revisions
Content added Content deleted
(Add Mathematica/Wolfram Language implementation) |
(Add PARI/GP implementation) |
||
Line 815: | Line 815: | ||
Percent odd up to and including 10000: 18.030657 |
Percent odd up to and including 10000: 18.030657 |
||
Percent even up to and including 10000: 81.969343 |
Percent even up to and including 10000: 81.969343 |
||
</pre> |
|||
=={{header|PARI/GP}}== |
|||
{{trans|Mathematica_/_Wolfram_Language}} |
|||
<syntaxhighlight lang="parigp"> |
|||
/* Define the function to check if a number is not prime in all bases greater than its maximum digit */ |
|||
is_pan_base_composite(n) = { |
|||
my(d = digits(n), base, isComp); |
|||
for (base = vecmax(d)+1, max(n, 10), |
|||
isComp = !isprime(fromdigits(d, base)); |
|||
if (!isComp, return(0)); /* If number is prime in any base, return false */ |
|||
); |
|||
return(1); /* Number is composite in all bases */ |
|||
} |
|||
/* Generate the list of all pan base composites up to 2500 */ |
|||
pan_base_2500 = select(is_pan_base_composite, [2..2500]); |
|||
/* Define a function to check if a number is odd */ |
|||
is_odd(n) = n % 2 == 1; |
|||
/* Filter out the odd numbers from the pan base composites */ |
|||
odd_pan_base_2500 = select(is_odd, pan_base_2500); |
|||
/* Calculate the ratio of odd pan base composites to all pan base composites */ |
|||
ratio = #odd_pan_base_2500 / #pan_base_2500; |
|||
/* Print the first 50 pan base non-primes */ |
|||
print("First 50 pan base non-primes:"); |
|||
print(concat("", vector(min(#pan_base_2500, 50), i, Str(pan_base_2500[i])))); |
|||
/* Print the first 20 odd pan base non-primes */ |
|||
print("\nFirst 20 odd pan base non-primes:"); |
|||
print(concat("", vector(min(#odd_pan_base_2500, 20), i, Str(odd_pan_base_2500[i])))); |
|||
/* Print the count of pan-base composites up to and including 2500 */ |
|||
print("\nCount of pan-base composites up to and including 2500: ", #pan_base_2500); |
|||
/* Print the ratios */ |
|||
default(realprecision, 4) |
|||
print("Odd up to and including 2500: ", ratio, ", or ", ratio * 100.0, "%."); |
|||
print("Even up to and including 2500: ", 1 - ratio, ", or ", (1 - ratio) * 100.0, "%."); |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
First 50 pan base non-primes: |
|||
["4", "6", "8", "9", "20", "22", "24", "26", "28", "30", "33", "36", "39", "40", "42", "44", "46", "48", "50", "55", "60", "62", "63", "64", "66", "68", "69", "70", "77", "80", "82", "84", "86", "88", "90", "93", "96", "99", "100", "110", "112", "114", "116", "118", "120", "121", "130", "132", "134", "136"] |
|||
First 20 odd pan base non-primes: |
|||
["9", "33", "39", "55", "63", "69", "77", "93", "99", "121", "143", "165", "169", "187", "231", "253", "273", "275", "297", "299"] |
|||
Count of pan-base composites up to and including 2500: 953 |
|||
Odd up to and including 2500: 161/953, or 16.89%. |
|||
Even up to and including 2500: 792/953, or 83.11%. |
|||
</pre> |
</pre> |
||