Make a script, that will when give a product of two prime factors, prints those two.
Example:
Product(x*y): 15
x = 3
y = 5
That's actually a program that can decrypt RSA password, when given x and y.
Which would take (on personal computer) about as long as the universe is old. (That's long)
+Rep to the one who makes it first.
________________________________________________
Oh, come on it's not that hard.
For the proposes of understanding, this is a contest, I have already written this script and I don't want someone to do it for me.
No, no, no. He's asking for you to basically find whether or not the number you are given is a product of 2 prime number, and if it is, what are the 2 prime numbers.
I've actually been working on this since you started the competition, and been looking online for functions or something to test if a number is prime, but my effort has been in vain. I'm still learning so I'll get back to you on this.
I can throw you that up quick in enough, but only in C. But you someone should be able to translate it. What's the biggest possible number to be entered (eg. max value of x*y)?
Edit:
Here's your solution in C, maybe someone can take the concept and write it down in Python.
Code:
//Include standard input-output.
#include <stdio.h>
//Function to check, whether the provided number is a prime, if it is, returns 0.
int start(int a)
{
int i;
for(i=2;i<(a/2)+1;i++)
{
if(a%i==0)
return 1;
}
return 0;
}
//My lovely main function.
int main()
{
//Lets the user know the program is online.
printf("Starting...\n");
//A variable to set the amout of primes to calculate.
//The program calculates l+1 first primes.
int l;
l=9999;
//Declaring my variables and an array large enough, to hold the primes.
int i,n,d,a,primes[l];
//The first prime is 2, ergo i=2 at kickoff.
i=2;
n=0;
//While the array is not filled with primes...
while(n<=l)
{
//Find primes. If i is a prime, stick it in the array.
if(start(i)==0)
{primes[n]=i;
n++;
i++;}
else
//If it isn't, keep searching.
{i++;}
}
//Notify of the results, how many primes were calculated, etc.
printf("Done calculating the first %d primes into an array.\n",(l+1));
printf("The last calulated prime is %d,\nso the entered number has to be smaller than the square of that.\n",primes[l]);
printf("Please enter your number: ");
//Read in the number the user is interested in.
scanf("%d",&d);
printf("Searching now...\n");
//Check if the provided number can be produced by multiplying numbers from the array, which holds the primes.
for(a=0;a<n;a++)
{
for(i=0;i<n;i++)
if(primes[a]*primes[i]==d)
{
//If yes, print out the numbers.
printf("Gotcha, your primes are %d and %d!",primes[a],primes[i]);
getchar();
getchar();
return 0;
}
}
//If not, be sad. =(
printf("No primes identified.");
getchar();
getchar();
return 0;
}
//Written by Etheryte, released to the free world.
Fallen did the ispirme function.
But the whole script has to check if the given number (in this case 15) is dividable by 3 if not try dividing with 5 and so on.
That's the easy part.
(10-09-2009, 04:31 AM)Etheryte Wrote: [ -> ]I can throw you that up quick in enough, but only in C. But you someone should be able to translate it. What's the biggest possible number to be entered (eg. max value of x*y)?
Edit:
Here's your solution in C, maybe someone can take the concept and write it down in Python.
To test the exe version of my code, just download it.
Code:
//Include standard input-output.
#include <stdio.h>
//Function to check, whether the provided number is a prime, if it is, returns 0.
int start(int a)
{
int i;
for(i=2;i<(a/2)+1;i++)
{
if(a%i==0)
return 1;
}
return 0;
}
//My lovely main function.
int main()
{
//Lets the user know the program is online.
printf("Starting...\n");
//A variable to set the amout of primes to calculate.
//The program calculates l+1 first primes.
int l;
l=9999;
//Declaring my variables and an array large enough, to hold the primes.
int i,n,d,a,primes[l];
//The first prime is 2, ergo i=2 at kickoff.
i=2;
n=0;
//While the array is not filled with primes...
while(n<=l)
{
//Find primes. If i is a prime, stick it in the array.
if(start(i)==0)
{primes[n]=i;
n++;
i++;}
else
//If it isn't, keep searching.
{i++;}
}
//Notify of the results, how many primes were calculated, etc.
printf("Done calculating the first %d primes into an array.\n",(l+1));
printf("The last calulated prime is %d,\nso the entered number has to be smaller than the square of that.\n",primes[l]);
printf("Please enter your number: ");
//Read in the number the user is interested in.
scanf("%d",&d);
printf("Searching now...\n");
//Check if the provided number can be produced by multiplying numbers from the array, which holds the primes.
for(a=0;a<n;a++)
{
for(i=0;i<n;i++)
if(primes[a]*primes[i]==d)
{
//If yes, print out the numbers.
printf("Gotcha, your primes are %d and %d!",primes[a],primes[i]);
getchar();
getchar();
return 0;
}
}
//If not, be sad. =(
printf("No primes identified.");
getchar();
getchar();
return 0;
}
//Written by Etheryte, released to the free world.
I don't know if there's a limit with number size in C, but the script I written in Python should work with all numbers. But the process itself takes ridiculously long at big numbers.
Rebuilt the code so it can work with any number provided. No matter what language you choose, it will take a long time if the number is large, the size of the number and the time needed create an exponential function.
So, now that they did this thing.. what does it do?