______________从时间超限到800ms 到200ms——————2098
2024-09-07 18:44:43
分拆素数和
Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others)
Total Submission(s): Accepted Submission(s): Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢? Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。 Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 Sample Input Sample Output Source
2007省赛集训队练习赛()
题是水题.....但是 就是写不成.总是超时..还是一些技巧不知道 下面附上原始的800ms
/*
和最初写的程序比较起来....这个 比较容易看懂
上一个自己就把自己写晕了
*/
#include<stdio.h>
int prime(int x);
int main()
{
int n,i,j,m,a,b,c;
while(scanf("%d",&n),n)
{
int jishu=;
for(i=;i<n/;i++)
{
j=n-i;
if(prime(i)==&&prime(j)==)
{
jishu++;
}
}
printf("%d\n",jishu);
}
}
int prime(int a)
{
int i,t=;
for(i=;i<=a/;i++)//将输入进来的数字 开始检查.
{
if(a%i==) //在这里没有 加括号...
{
t=;
break; // 跳出去
}
}
return t; }
下面带上 200ms 直接缩小4倍时间的 代码并且 给出 改动的地方
/*
和最初写的程序比较起来....这个 比较容易看懂
上一个自己就把自己写晕了
*/
#include<stdio.h>
#include<math.h>
int prime(int x);
int main()
{
int n,i,j,m,a,b,c;
while(scanf("%d",&n),n)
{
int jishu=;
for(i=;i<n/;i++)
{
j=n-i;
if(prime(i)==&&prime(j)==)
{
jishu++;
}
}
printf("%d\n",jishu);
}
}
int prime(int a)
{
int i,t=;
for(i=;i<=sqar(a);i++)// 唯一改动的地方 (求是不是素数的时候开平方 这样 能减少 很多运算....时间就是乳沟一样 这里挤挤那里挤挤就有了....)
{
if(a%i==) //在这里没有 加括号...
{
t=;
break; // 跳出去
}
}
return t; }
最新文章
- 【Mutual Training for Wannafly Union #1 】
- jQuery-1.9.1源码分析系列(十) 事件系统——主动触发事件和模拟冒泡处理
- Linux 卸载mysql-libs包出现错误
- 算法求和sum问题
- 作死遇到的坑--view向下偏移
- Spring REST实践之Versioning,Paging和Sorting
- 每天一个Linux命令(1):ls命令
- POJ 2892 Tunnel Warfare || HDU 1540(树状数组+二分 || 线段树的单点更新+区间查询)
- [原创]Windows下更改特定后缀名以及特定URL前缀的默认打开方式
- 『转』MarsEdit快速插入源代码
- 百度百科Tooltip的实现--原生js的应用
- 2015四川省acm B题
- wxWidgets 在 Linux 下开发环境配置
- Socket与TCP,UDP
- IntelliJ IDEA web项目 工程构建运行部署
- Ubuntu14.04+caffe+CPU
- window7环境MySql5.7 zip安装配置教程
- pkg-config原理及用法
- 【C#入门经典视频教程】-第001课-C#入门-认识C#
- Spring JDBC多批次操作