| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 264 人关注过本帖
标题:关于求素数的一些问题
只看楼主 加入收藏
LOVE燕
Rank: 2
等 级:论坛游民
帖 子:37
专家分:12
注 册:2012-11-14
结帖率:90.91%
收藏
已结贴  问题点数:13 回复次数:2 
关于求素数的一些问题
#include "stdio.h"
int funum(int num);
int funum(int num)
{int i;
    for(i=2;i<=sqrt(num);i++)
    if(num%i==0)
    return 0;
    else
    return 1;
}

void main()
{ int num,k;
    printf("please input num:");
    scanf("%d",&num);
    k=funum(num);
    printf("%d",k);
    getch();
}


为什么我的不可以呀。。当我输入25 49 等数的时候。。它是素数。。求解是什么原因。。
搜索更多相关主题的帖子: include 
2012-11-18 22:46
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
#include "stdio.h"
#include<math.h>//sqrt是一个库函数,要头文件math
 int funum(int num);
 int funum(int num)
 {int i;
     for(i=2;i<=(int)sqrt(num);i++)//sqrt(num)可能为小数而i为整型,加一个int可以强制转换为整型
     if(num%i==0)
     return 0;
     else
         return 1;
 }
 
void main()
 { int num,k;
     printf("please input num:");
     scanf("%d",&num);
     k=funum(num);
     printf("%d",k);
 //因为我是VC编译,所以不能有getch()
 }
 

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-11-18 23:04
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:13 
if(num%i==0)
    return 0;
    else
    return 1;
写的有问题,比如 100%2==0;这时return 0;不是素数,但下一次循环100%3!=0;这时return 1 了。这样就会导致有些结果不对。
改进的方法应该很多,我这里提供一种,楼主可以参考一下
#include "stdio.h"
#include<math.h>
int funum(int num);
int funum(int num)
{int i;
    for(i=2;i<=sqrt(num);i++)
    {if(num%i==0)
    return 0;
    if(num%i!=0&&i==int(sqrt(num)))
    return 1;}
}

void main()
{ int num,k;
    printf("please input num:");
    scanf("%d",&num);
    k=funum(num);
    printf("%d",k);
}

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2012-11-18 23:18
快速回复:关于求素数的一些问题
数据加载中...
 
   



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

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