| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1411 人关注过本帖
标题:帮忙改改
只看楼主 加入收藏
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
 问题点数:0 回复次数:12 
帮忙改改

这是一个判断两个大于0且不等的数a,b间素数个数(包括a,b)的程序

我在一个判断网站判断的结果是程序时间消耗过大

帮忙看看:

思想是sushu(int a)是一个素数判断程序

特点:它只对奇数判断有效果 是素数flag=0,否则flag=1;

而且1 flag=0;

sushuab(int a,intb)是解决本题的函数,a=1时:1代替2作为素数所以总素数的个数不变,不对偶

数进行判断。a=2时: 判断的结果+1。a>2时 没有影响。

#include <iostream.h> #include <math.h> int sushu(int a) { int k,n,flag; flag=0; n=int(sqrt(a)); for(k=3;k<=n;k=k+2) { if(a%k==0) { flag=1; break; } } return flag; }

void sushuab(int a,int b) { int i; int j=0; int c; c=(int)(a/2)*2+1; for(i=c;i<=b;i=i+2) { if(sushu(i)==0) j++; } if(a==2) j=j+1; cout<<j<<endl; } int main() { int a,b; do{ cin>>a>>b; sushuab(a,b); }while(1); return 0; }

[此贴子已经被作者于2004-10-09 10:49:36编辑过]

搜索更多相关主题的帖子: 改改 
2004-10-09 10:48
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
下面是我写的,你看这样可以吗?

#include<iostream.h> #include<math.h>

int prime(int a,int b) { int count=0;

if(a==2) { count++; a++; } else if(a==3) { count++; a+=2; }

if(a%2==0) a++; if(b%2==0) b--;

for(int i=a;i<=b;i+=2) { if(i%3==0) continue; for(int j=3;j<(int)sqrt(i);j+=2) { if(i%j==0) break; } count++; } return count; }

void main() { int a,b,temp; cin>>a>>b; while(a>1&&b>1) { if(a>b) { temp=a; a=b; b=temp; } cout<<prime(a,b)<<endl;

cin>>a>>b; } }

[此贴子已经被作者于2004-10-09 20:04:00编辑过]

2004-10-09 20:03
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
得分:0 

可能不行

这个的a要允许从1开始

另:我对这个程序的测试结果是 输入2 100输出33

可能还要修改,我也把你这个程序发到测试网站上了,结果是WRONG ANSWER

2004-10-10 09:07
alixnuaa
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-10
收藏
得分:0 

我试了一个,不过好象有问题,帮忙看看。

#include <iostream> #include <math.h> using namespace std; int prime(int a) { int i,k,flag; k=(int)sqrt((double)a); for(i=2;i<=k;i++) if(a%i==0) {flag=0; break;} if(i>=k+1) flag=1; return flag; } int prime(int a,int b,int count) { if(a>b){ int temp=a;a=b;b=temp;} for(int i=a;i<=b;i++) if(prime(i)) count++; return count-2;} int main() { int a,b,count; cout<<"enter two numbers:"; cin>>a>>b; cout<<prime(a,b,count)<<endl; //cout<<"there are "<<prime(a,b,count)<<" primes from " //<<a<<" to "<<b<<endl; system("pause"); return 0; }

2004-10-11 19:58
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
得分:0 

帮忙看看

2004-10-12 10:37
玩具兵
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2004-8-17
收藏
得分:0 

@ alixnua: 老兄:我根据您的程序写了一个,请指正: #include <iostream> using namespace std;

int prime(int start, int end) { int count = 0; for(int i = start; i <= end; i++) { int flag = 0; for(int j = 1; j <= i; j++) { flag += (i % j == 0); } if (flag == 2) { cout << i << endl; count++; } } return count; } int main() { int a, b; cout << "enter two numbers:"; cin >> a >>b; //cout << prime(a, b) << endl; cout<<"there are "<<prime(a, b) << " primes from " <<a<<" to "<<b<<endl; system("pause"); return 0; }

[此贴子已经被作者于2004-10-12 15:01:12编辑过]

2004-10-12 14:56
alixnuaa
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-10-10
收藏
得分:0 

玩具兵:

很漂亮啊!我的程序有问题,而且感觉很烦。

以后多多交流哦,我刚学的:)

2004-10-12 17:15
玩具兵
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2004-8-17
收藏
得分:0 

哈哈,这是我的代码为什么漂亮的原因,下载一个软件SyntaxHlt就搞定了:

http://www.codeguru.com/Cpp/misc/samples/codehighlighting/article.php/c4693/

2004-10-12 19:54
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

#include<iostream.h> #include<math.h>

int prime(int a,int b) { int count=0; bool flag=1;

if(a==2) { count++; a++; } if(a==3) { count++; a+=2; }

if(a%2==0) a++; if(b%2==0) b--;

for(int i=a;i<=b;i+=2) { if(i%3==0) continue; for(int j=3;j<(int)i/2;j+=2) { if(i%j==0) { flag=0; break; } }

if(flag==1) count++; } return count; }

void main() { int a,b,temp; cin>>a>>b; while(a>0&&b>0) { if(a>b) { temp=a; a=b; b=temp; } cout<<prime(a,b)<<endl;

cin>>a>>b; } }

2004-10-12 22:04
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
得分:0 

一下是一些数据

INPUT

1 10

OUTPUT 4

1 100

OUTPUT 25

live41的程序,1 100 输出8

要求程序对300000以内的数有效

2004-10-13 08:35
快速回复:帮忙改改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017521 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved