39:第n小的质数

39:第n小的质数
    总时间限制:    1000ms    内存限制:    65536kB
描述
    输入一个正整数n,求第n小的质数。
输入
    一个不超过10000的正整数n。
输出
    第n小的质数。
样例输入
    10
样例输出
    29

方法一:老实枚举计数寻找到第n个质数然后输出。

 #include<stdio.h>
#include<math.h>
int main(int argc, char *argv[])
{
long i,n,count;
long j,flag,t;
scanf("%d",&n); //需要寻找第n个质数
count=; //已经寻找到count个 i=;
//i从2开始逐渐增大。依次判断i的值是否是质数并计数
while(count<n)
{
//判断i是否质数
j=;flag=;t=sqrt(i);
while(j<=t)
{
if(i%j==)
{
flag=;
break;
}
j++;
}
//如果i是质数,count计数器加1
if(flag==) count++;
i++;//准备判断下一个数
}
printf("%d\n",i-);
return ;
}

方法二:离线计算,先打印出10000质数存到数组中,然后……呵呵

把上面的代码稍微修改一下,用来生成质数并输出到文件里面:

 #include<stdio.h>
#include<math.h>
int main(int argc, char *argv[])
{
long i,n,count;
long j,flag,t;
freopen("39.out","w",stdout);
//scanf("%d",&n); //需要寻找第n个质数
n=;
count=; //已经寻找到count个 i=;
//i从2开始逐渐增大。依次判断i的值是否是质数并计数
while(count<n)
{
//判断i是否质数
j=;flag=;t=sqrt(i);
while(j<=t)
{
if(i%j==)
{
flag=;
break;
}
j++;
}
//如果i是质数,count计数器加1
if(flag==)
{
count++;
printf("%d,",i);
}
i++;//准备判断下一个数
}
//printf("%d\n",i-1);
return ;
}

然后复制文件当中的数据到代码里面构造数组嘿嘿嘿

 #include <stdio.h>
int main(int argc, char *argv[])
{
long a[]=
{ //为了网页打开速度快一点,不写完数据了呵呵
,,,,,,,,,,,……
};
int n;
scanf("%d",&n);
printf("%d\n",a[n-]);
return ;
}

嗯,投机取巧了呵呵

上一篇:python常用库安装网址


下一篇:Spark(Hive) SQL中UDF的使用(Python)