08年上海交大复试上机题第一题
原题如下:
Problem A. Prime Number
Input file: Standard Input
Output file: Standard Output
Time Limit: 1 Second
Output the k-th prime number.
Input
k≤10000
Output
The k-th prime number.
Sample input and output
Standard Input
Standard Output
代码语言:javascript复制#include<stdio.h>
#include<math.h>
#include<time.h>
#define MAX 10001
/**********************判断一个整数是否为素数**************************/
bool Is_Primer(int n)
{ if(n <= 1)
return false;
for(int i = 2; i <= sqrt(n); i )
{
if(n % i == 0)
return false;
else
continue;
}
return true;
}
int main()
{
double start,finish; /* 开始时间,结束时间 */
int k,a[MAX] = {0};
scanf("%d",&k);
a[0] = 2;
a[1] = 3;
start = (double) clock();
/*******找到第k个素数,将1到10000个素数存到数组a[MAX]中************/
for(int n =5,j = 2; j <10001; n = 2){
if(Is_Primer(n))
{
a[j ] = n;
}
}
printf("The %d Primer number is %d/n",k,a[k-1]);
finish = (double) clock();
printf("The time was: %.4fs/n",(finish - start)/CLOCKS_PER_SEC);
return 0;
}
我的做法是写一个检验一个正整数是否为素数的函数
,然后在主函数中将1到10000个素数存放在数组a[10001]当中,
输出要找的第K个素数a[k-1]即可。
当然这道题对于经常编Acm题目的人来说是小菜一碟了,
它是08年上海交大复试上机题第一题。
另外为了测试程序的运行时间,
我用了C/C 中time.h中的clock函数
clock函数原型如下:
函数名: clock 功 能: 确定处理器时间 用 法: clock_t clock(void);
做出来题目的成就感真是太好了,但是我感觉自己的编程实际能力
实在是太差了,好多Acm题目都不会,看来得好好系统地学一下算法才行!
3
5
7
17
我写的程序: