| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1409 人关注过本帖
标题:帮忙改改
只看楼主 加入收藏
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
得分:0 
以下是引用玩具兵在2004-10-12 14:56:40的发言:

@ 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-13 08:36
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
unsigned int 的范围是 0-65535, signed int表示的数值范围是-32768~+32767, 300000超过了,用long吧。 至于我的算法有什么问题,我再看看,郁闷过去,一直没细心地调试过,不好意思。
2004-10-15 19:18
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

用3与该数的平方根之间的所有奇数去除这个数,均不能被整除者,即为素数。

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

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

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

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

for(int i=a;i<=b;i+=2) { if(i%3==0) continue;

flag=1;

for(int j=3;j<=(int)sqrt(i);j+=2) { if(i%j==0) { flag=0; break; } }

if(flag==1) { cout<<i<<" "; count++; } }

cout<<endl; return count; }

void main() { int a,b,temp; cout<<"enter value: "; cin>>a>>b;

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

cout<<"enter value:(enter 0 to exit) "; cin>>a>>b; } }

2004-10-15 19:58
快速回复:帮忙改改
数据加载中...
 
   



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

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