![](https://img-blog.csdn.net/20160813213422256?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
题目:http://acm.hust.edu.cn/vjudge/contest/127946#status//D/0
简单的素数判定,没看懂题真可怕。。~~~~(>_<)~~~~ 不过看懂了题也想不到输出要加精度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
int f(int n)
{
int i;
for(i=2;i*i<=n;i++)
{
if((n%i)==0)
return 0;
}
return 1;
}
int main()
{
int num[10010];
int i;
int a,b;
int sum;
memset(num,0,sizeof(num));
for(i=0;i<=10005;i++)
num[i]=f(i*i+i+41);
while(scanf("%d%d",&a,&b)!=-1)
{
sum=0;
for(i=a;i<=b;i++)
sum+=num[i];
printf("%.2f\n",sum*1.0/(b-a+1)*100+1e-8);
}
return 0;
}
为什么又超时~~~~(>_<)~~~~ //超时。。。
#include<cstdio>
int f(int n)//素数判定
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
int t=1,sum=0;
for(int i=a;i<=b;i++)
{
sum+=f(i*i+i+41);
}
printf("%.2f\n",sum*1.0/(b-a+1)*100+1e-8);
}
return 0;
}