Codice:
Mettendo in list i prima sei numeri primi: 2, 3, 5, 7, 11, e 13, possiamo vedere che il sesto numero primo è 13.
Qual è il 10001° numero primo?
Soluzione in C:
http://shurabozz.pastebin.com/f42457153
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Mettendo in list i prima sei numeri primi: 2, 3, 5, 7, 11, e 13, possiamo vedere che il sesto numero primo è 13.
Qual è il 10001° numero primo?
ShuraBozz ha detto:che io sapessi il C99 lo prevede
#include<iostream>
using namespace std;
bool ifPrime(int n){
bool check=true;
for(int i=2;i<n/2 && check;i++)
if(!(n%i))//trovato divisore quindi non primo
check=false;
return check;
}
//true se trova numero primo???
main(){
int start=1,count=1,goal=10001,number=4;
bool primo;
while(count!=goal){
primo=ifPrime(number);
if(primo==true){
//cout<<"number "<<number<<endl;
number++;
count++;
}
else{
number++;
}
}
cout<<"10001st prime number-> "<<number-1<<endl;
}
/* By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see
that the 6^(th) prime is 13.
What is the 10001^(st) prime number? */
#include <stdio.h>
int prime(int);
int main()
{
int i=1, n=3;
do{
if(prime(n)){
i++;
n += 2;
}
else
n += 2;
}
while(i != 10001);
printf("The 10001st prime is: %d\n", n - 2);
return 0;
}
int prime(int n)
{
int i;
for(i = 2; i <= (int)n/2; i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
Private sub Command1_Click()
Dim i=1, n=3, control As Integer
Do
control = prime(n)
if control = 1 Then
i = i + 1
n = n + 2
else
n = n + 2
End if
Loop While i <> 10001
Text1.Text = CStr(i)
End Sub
------------------------------------------------
Private Function prime(n As Integer) As Integer
Dim i As Integer
For i = 2 To n \ 2
if (n Mod i) = 0 Then
prime = 0
End if
Next i
prime = 1
End Function
ShuraBozz ha detto:NO! il VB no! :'(
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int isPrime(int x); //controlla se un numero è primo
int main(void)
{ int n,cont;
cont = 1; // parto da 1 perchè non passo da due ma due è primo...
n=1;
while(cont<10001)
{
n += 2;
if(isPrime(n))
cont++;
}
printf("il 10001esimo numero primo è : %d",n);
return 0;
}
int isPrime(int x)
{ int i,factor = sqrt(x);
for(i=2; i<=factor; i++)
if(!(x%i))
return 0;
return 1;
}
cyd ha detto:good, c'è solo un ordine di grandezza tra il tuo in c e il tuo in php... bella php
Cynical ha detto:cyd ha detto:good, c'è solo un ordine di grandezza tra il tuo in c e il tuo in php... bella php
potresti renderlo ancora più veloce non controllando i numeri pari..
#!/usr/bin/env perl
# Mettendo in lista i primi sei numeri primi: 2, 3, 5, 7, 11, e 13, possiamo vedere che il sesto numero$
#
# Qual è il 10001° numero primo?
#
# http://search.cpan.org/~zigdon/Math-Prime-TiedArray-0.04/lib/Math/Prime/TiedArray.pm
use strict;
use warnings;
use Math::Prime::TiedArray;
tie my @primes, "Math::Prime::TiedArray";
print $primes[10000]."\n" ;
[~/scripts] $ time perl prime_1001.pl
perl prime_1001.pl 0,78s user 0,01s system 99% cpu 0,790 total