64,644
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main()
{
int m;
int n=0;
//vector<int> prime;
char ch;
fstream fp;
cout<<"What prime numbers do you want get within? ";
if((cin>>m)==0)
{
cout<<"Bad input! Please try agin!\n";
return 1;
}
if(m<2)
{
cout<<"There are no prime numbers within "<<m<<endl;
return 0;
}
else if(m==2)
{
fp.open("prime.txt",ios::in|ios::out|ios::trunc);
fp<<"There are only 1 prime number within 2.\n";
fp<<"2\n";
fp.close();
cout<<"Congratulations! It has worked out!\n";
return 0;
}
else
{
int j;
int sq;
fp.open("prime.txt",ios::in|ios::out|ios::trunc);
fp<<"2\t\t";
n++;
for(int i=3;i<=m;i+=2)
{
sq=static_cast<int>(sqrt(i))+1;
fp.seekg(0,ios::beg);
fp>>j;
for(;j<sq;)
{
if(i%j==0)
{
break;
}
else
{
if((fp>>j)==NULL)
{
j=3;
}
}
}
if(j>=sq)
{
fp.seekg(0,ios::end);
fp<<i<<"\t\t";
n++;
if(n%4==0)
fp<<'\n';
}
}
fp.seekg(0,ios::end);
fp<<"\nThere are only "<<n<<" prime number within "<<m<<".\n";
fp.close();
cout<<"Congratulations! It has worked out!\n";
return 0;
}
}
//暂时只给第一种的实现,大家可以测试一下在自己电脑上跑多少时间.
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX_PRIME = 2000000;
int PrimeTable[6000000];
int IsPrime[MAX_PRIME+1];
int PrimeCnt = 0;
void get_prime()
{
memset(IsPrime, 1, sizeof(IsPrime));
IsPrime[0] = IsPrime[1] = 0;
for (int i = 2 ; i < MAX_PRIME; i++)
if (IsPrime[i])
{
for (long long j = (PrimeTable[PrimeCnt++] = i) * (long long)i; j < MAX_PRIME; j += i)
IsPrime[j] = 0;
}
}
int main()
{
get_prime();
printf("%d\n", PrimeTable[99999]);
return 0;
}
public static void main(String[] args)
{
int len = 100000;
int[] arr = new int[len];
arr[0] = 2;
int m = 3;
int i = 1;
while(i < len){
boolean isLeap = true;
for(int j = 0; j < i && arr[j] < Math.sqrt(m) + 1; j++){
if(m % arr[j] == 0){
isLeap = false;
break;
}
}
if(isLeap){
arr[i++] = m;
}
m += 2;
}
System.out.println(arr[len - 1]);
}
#include <stdio.h>
#include <math.h>
unsigned int s[100000] = {2};
unsigned int s_i = 1;
inline int is_sushu(unsigned int n)
{
int m = sqrt(n)+1;
for (int i=0; s[i]<=m; i++) {
if (i==s_i)
return 1;
if (n%s[i]==0)
return 0;
}
return 1;
}
int main()
{
for (int i=3; s_i!=100000; i+=2)
if (is_sushu(i))
s[s_i++] = i;
printf("%d\n", s[99999]);
}
#include <stdio.h>
#include <math.h>
unsigned int s[100000] = {2};
unsigned int s_i = 1;
int is_sushu(unsigned int n)
{
int i = 0;
int m = sqrt(n)+1;
for (i=0; i<=m; i++) {
if (i==s_i)
return 1;
if (n%s[i]==0)
return 0;
}
return 1;
}
int main()
{
int i;
for (i=3; ; i++) {
if (is_sushu(i))
s[s_i++] = i;
if (s_i>=100000)
break;
}
printf("%d\n", s[99999]);
}