| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 492 人关注过本帖
标题:有关用涵数写素数的简单问题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:10 回复次数:1 
有关用涵数写素数的简单问题
输出20以内的素数
#include"stdio.h"
void main()
{
int f(int a);
int a,t;
for(a=2;a<20;a++)             /*有20个数*/
 {t=f(a) ;                     
  if (t==1);
 printf("%d\t",a);}
 getch();}
  int f(int a)            /*函数是用来判断是否是素数*/
  {
  int t,i;
  for(i=2;i<a;i++)
  {if(a%i==0)
  {t=0;break;}
  if(a%i!=0&&a==i+1)  t=1; }  
return t; }
不知道为什么结果还是2.3.4.5.6.7........19,
搜索更多相关主题的帖子: 简单问题 素数 
2010-04-24 12:17
b001lcp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:157
注 册:2010-3-17
收藏
得分:10 
#include"stdio.h"
void main()
{
    int f(int a);
    int a,t;
    for(a=2;a<20;a++)             /*有20个数*/
    {
        t=f(a) ;                     
        if (t==1);
        printf("%d\t",a);
    }
    getch();
}
int f(int a)            /*函数是用来判断是否是素数*/
{
    int t,i;
    for (i=2; i<a; i++)
    {
        if (a%i==0)
        {
            t=0;  //既然能走到这里,说明该数已经不是素数了,直接返回即可,没有必要再循环
            return t;
        }
    }
    if (i == a)
    {
        t=1; //程序走到了这里,说明a不被被a小的数整除,所以为素数
    }
    return t;

LZ的算法还可以优化,提升程序运行效率:判断一个数是否为素数,没有必要从2到a都循环一遍,循环到a/2即可,再提升就只循环到a的平方根(好像是平方根)
2010-04-24 12:45
快速回复:有关用涵数写素数的简单问题
数据加载中...
 
   



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

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