| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 856 人关注过本帖
标题:请教下要实现这个要怎么改
只看楼主 加入收藏
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:10 
请教下要实现这个要怎么改
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
#include <time.h>
void daxiao(int *,int *);
int zhishu(int,int);
int main(void)
{
    int i,n;
    scanf("%d%d",&i,&n);
    if(i>0&&n>0)
        daxiao(&i,&n);
    zhishu(i,n);
    return 0;
}


void daxiao(int *a,int *b)
    {
    int t;
    if(*a>*b)
        {
        t=*a;    *a=*b;    *b=t;
        }
    }



int zhishu(int i,int n)
{
    clock_t start,finish;
    int k,tag,s=1;
    printf("寻找%d至%d以内的素数\n",i,n);
    start=clock();
    for(i;i<=n;i+=2)
    {
        tag = 0;
        for(k=2;tag==0&&k<sqrt(i);k++)
        if(i%k==0)tag=1;
        if(tag==0)
        {
            printf("\r%d%%",i*100/n);
            s++;
        }
    }
finish=clock();
printf("\n总共%d个质数,用时%6.3f秒\n",s,(double)((finish-start)/CLOCKS_PER_SEC));
return 0;
}
这个程序是输入两个数后算出这两个数之间的素数,但是只要输入1就会出错!所以想改下输入1也能执行的.要怎样改
搜索更多相关主题的帖子: void clock include daxiao return 
2009-11-11 23:24
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:0 
for(i;i<=n;i+=2)
    {
        tag = 0;
        for(k=2;tag==0&&k<sqrt(i);k++)
        if(i%k==0)tag=1;
        if(tag==0)
        {
            printf("\r%d%%",i*100/n);
            s++;
        }
    }
这里面有问题
2009-11-11 23:43
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
收藏
得分:0 
回复 2楼 一旋无风
那要怎么改啊???

C菜鸟,在努力之中
2009-11-11 23:47
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
收藏
得分:0 
!!传错啦!这个也是错的。那位帮忙改下!!

C菜鸟,在努力之中
2009-11-12 00:00
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:8 

#include<stdio.h>
#include <stdlib.h>
#include<math.h>
#include <time.h>
void daxiao(int *a,int *b)
    {
    int t;
    if(*a>*b)
        {
        t=*a;    *a=*b;    *b=t;
        }
    }
void zhishu(int m,int n)
{
    clock_t start,finish;
   
    printf("寻找%d至%d以内的素数\n",m,n);
    start=clock();
    int j,k,i;
    int count=0;
    for(i=m<2?2:m;i<=n;i++)
    {
        k=(int)(sqrt(i));
        for(j=2;j<=k;j++)
        if(i%j==0) break;
        if(j>k)
        {
            count++;
            printf("%d\n",i);
        }
     }
finish=clock();
printf("\n总共%d个质数,用时%6.3f秒\n",count,(double)((finish-start)/CLOCKS_PER_SEC));
}

void main()
{
    int i,n;
    scanf("%d%d",&i,&n);
    if(i>0&&n>0)
        daxiao(&i,&n);
    zhishu(i,n);
  
}
我的编法,约有不同
2009-11-12 00:03
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:0 
你要的是这样的结果不?还是有差错的话跟我说一下
2009-11-12 00:07
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:0 
觉得行就结贴吧,有分么?
2009-11-12 00:09
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
收藏
得分:0 
回复 7楼 一旋无风
恩!!但是运行部了哦!
我用的是VC 6.0
运行的结果是syntax error : missing ';' before 'type'
syntax error : missing ';' before 'type'
error C2065: 'i' : undeclared identifier

C菜鸟,在努力之中
2009-11-12 09:40
一旋无风
Rank: 2
等 级:论坛游民
帖 子:55
专家分:92
注 册:2009-11-11
收藏
得分:0 
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
#include <time.h>
void daxiao(int *a,int *b)
    {
    int t;
    if(*a>*b)
        {
        t=*a;    *a=*b;    *b=t;
        }
    }
void zhishu(int m,int n)
{
    clock_t start,finish;
   
    printf("寻找%d至%d以内的素数\n",m,n);
    start=clock();
    int j,k,i;
    int count=0;
    for(i=m<2?2:m;i<=n;i++)
    {
        k=(int)(sqrt(i));
        for(j=2;j<=k;j++)
        if(i%j==0) break;
        if(j>k)
        {
            count++;
            printf("%d\n",i);
        }
     }
finish=clock();
printf("\n总共%d个质数,用时%6.3f秒\n",count,(double)((finish-start)/CLOCKS_PER_SEC));
}

void main()
{
    int i,n;
    scanf("%d%d",&i,&n);
    if(i>0&&n>0)
        daxiao(&i,&n);
    zhishu(i,n);
  
}
不会吧,我试了啊,可以啊
2009-11-12 10:36
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:12 
在你发的程序改下:
clock_t start,finish;
    int k,tag,s=1;                          // s=0; 初0
    printf("寻找%d至%d以内的素数\n",i,n);
    start=clock();
    for(i;i<=n;i+=2)                        // i++ 用增1
    {
        tag = 0;
        for(k=2;tag==0&&k<sqrt(i);k++)      // k<=sqrt(i)  加个'='等号
        if(i%k==0)tag=1;
        if(tag==0)
        {
            printf("\r%d%%",i*100/n);      // ("%d ",i) 输出素数
            s++;
        }
    }


printf("\n总共%d个质数,用时%6.3f秒\n",     // %6.3lf 加个L

努力—前进—变老—退休—入土
2009-11-12 10:40
快速回复:请教下要实现这个要怎么改
数据加载中...
 
   



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

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