Kody źródłowe/Tablica liczb pierwszych i rozkładów na czynniki pierwsze
Przejdź do nawigacji
Przejdź do wyszukiwania
Tablica liczb pierwszych i rozkładów na czynniki pierwsze Kod źródłowy |
←Tablica liczb pierwszych i rozkładów na czynniki pierwsze |
ANSI C[edytuj]
Kod w języku ANSI C według którego została wygenerowana tablica liczb pierwszych i rozkładów na czynniki pierwsze:
#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <stdlib.h>
int main() {
int min,max;
int n,m,p,pierwiastek;
int pierwsza;
int licznik;
char *pierwsze;
do {
fprintf(stderr,"Poczatek przedzialu: ");
scanf("%d",&min);
} while (min<=1);
do {
fprintf(stderr,"\nKoniec przedzialu : ");
scanf("%d",&max);
} while (max<min);
pierwsze=(char*)malloc(max+1); /*new char[max+1];*/
memset(pierwsze,1,max+1);
printf(
"<table border=\"1\" width=\"33%%\" style=\"text-align: left\">\n"
"<caption>Tablica rozkładów na czynniki pierwsze dla liczb od %d do %d</caption>\n"
"<tr>\n"
"<th width=\"20%%\">Liczba</th>\n"
"<th width=\"80%%\">Czynniki pierwsze</th>\n"
"</tr>\n"
,min,max);
licznik=1;
for (n=2;n<=max;n++) {
if (n>=min)
if (n%100==0)
printf(
"</table>\n"
"<table border=\"1\" width=\"33%%\" style=\"text-align: left\">\n"
"<tr><td width=\"20%%\">%d</td><td width=\"80%%\">"
,n);
else
printf("<tr><td>%d</td><td>",n);
p=n;
pierwsza=1;
pierwiastek=(int)(sqrt(p)+0.5);
for (m=2;m<=pierwiastek;m++)
if (pierwsze[m] && p%m==0) {
if (n>=min)
printf(pierwsza ? "=%d" : "×%d",m);
pierwsza=0;
p/=m;
m--;
pierwiastek=(int)(sqrt(p)+0.5);
}
if (pierwsza) {
if (n>=min)
printf("Liczba pierwsza nr %d",licznik);
licznik++;
} else {
if (n>=min)
printf("×%d",p);
pierwsze[n]=0;
}
if (n>=min)
printf("</td></tr>\n");
}
printf("</table>\n");
return 0;
}
Python[edytuj]
Prostsza metoda od powyższej w języku Python. Coded by MS
def findfactors(number):
listfactors = list()
tmpnum = number
factor = 1
if(number > 1):
while(number >= 2):
factor += 1
if(number % factor == 0):
listfactors.append(factor)
number /= factor
factor = 1
print "Factors of",tmpnum,":",listfactors
else:
print number,"- Positive integer must be greater then 1"
number = input("Enter positive integer > 1 for start sequence: ")
stopsequence = input("How many numbers do you want to factorize: ")
stopsequence += 1
print "\n"
for x in xrange(stopsequence):
findfactors(number)
number += 1
ANSI C[edytuj]
To samo co powyżej tylko w ANSI C. Coded by MS
#include <stdio.h>
void printfactors(long);
int main(void) {
long testnum, start, stop;
printf("Enter positive integer > 1 for start sequence: ");
scanf("%ld", &start);
printf("Enter last number to factorize: ");
scanf("%ld", &stop);
testnum = start;
for(start; start <= stop; start++) {
printfactors(testnum);
testnum++;
}
printf("\n\n");
return 0;
}
void printfactors(long n) {
long factor = 1;
printf("\n%ld = ", n);
while(n >= 2) {
factor++;
if(n % factor == 0) {
printf(" %ld ", factor);
n /= factor;
factor = 1;
}
}
}
Ten tekst nie podlega pod prawa autorskie. Jest zatem własnością publiczną, ponieważ jego autor udostępnił go na licencji public domain.