频道栏目
首页 > 资讯 > C语言 > 正文

C语言代码筛选求素数和普通求法

17-11-14        来源:[db:作者]  
收藏   我要投稿

素数:除了自身之外,无法被其它整数整除的数称之为素数

C代码(普通)

#include
#include
#include
#define N 100

//普通方法
int main()
{
    int i, j;
    for (i = 2; i < N; i++)
    {
        for (j = 2; j <= sqrt(i); j++)
        {
            if (i%j == 0)
            {
                break;
            }
        }
        if (j > sqrt(i))
        {
            printf("%d\n", i);
        }
    }
    //return 0;
    system("pause");
}

筛选法

#include
#include
#include
#define N 100
//筛选求质数
//具体筛法是:先把n个自然数按次序排列起来。
//1不是质数,也不是合数,要划去。
//第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。
//2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。
//3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。
//这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。
int main()
{
    int num=0;
    int flag[N+1];
    int i, j;
    for (i = 2; i <= N; i++)
    {
        flag[i] = 1;//初始化,表明此时没有数划去
    }
    for (i = 2; i*i <= N; i++)
    {
        if (flag[i] == 1)
        {
            for (j = 2; i*j <= N; j++)
            {
                flag[i*j] = 0;  //把i的倍数划去
            }
        }
    }
    for (i = 0; i <= N; i++)
    {
        if (flag[i] == 1)
        {
            printf("%4d", i);
            num++;
            if (num % 10 == 0)
            {   
                printf("\n");
            }
        }
    }
    printf("\n");
    system("pause");
}
相关TAG标签
上一篇:关于java.lang.IllegalStateException: Fragment already added问题的解决办法
下一篇:STM32系列微控制器开发工具与应用
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站