| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 408 人关注过本帖
标题:关于求素数的问题
只看楼主 加入收藏
yu1543054075
Rank: 1
等 级:新手上路
帖 子:102
专家分:8
注 册:2015-4-30
结帖率:90.24%
收藏
已结贴  问题点数:18 回复次数:3 
关于求素数的问题
求素数中100~200的全部素数。
技术要点:
素数是大于1的整数,除了能被自身和1整除外,不能被其他正整数整除,本势力的算法是这样的,让i到根号i整除,如果i能被i到根号i任意一个数
整除,则结束循环,若不能整除则要判断j是否是最接近或等于根号i的,如果能则证明是素数,否则继续下次循环。
#include<stdio.h>
#include<math.h>
int main(void)
{
    int i,j,n=0;
    for(i=100;i<=200;i++)
        for(j=2;j<<2<=i;j++)//这里我用j<<2代替了j*j,如果我换成j*j就会编译正确,不知道错在哪里
            if(i%j==0)
                break;
            else if(j>sqrt(i)-1)
                {
                    printf("%d ",i);
                    n++;
                    if(n%5==0)
                    putchar('\n');
                }
            else
                continue;
}
编译后会出现下面的结果:
101 101 101 101 101
101 101 101 101 101
101 101 101 101 101
101 103 103 103 103
103 103 103 103 103
103 103 103 103 103
103 103 ……
请诸位多多指点
搜索更多相关主题的帖子: include 正整数 技术 
2015-05-03 20:04
鲤鱼爱美丽
Rank: 8Rank: 8
来 自:冥界
等 级:蝙蝠侠
威 望:5
帖 子:288
专家分:843
注 册:2015-4-8
收藏
得分:0 
C语言里平方的输入与数学的存在着很大的差别,不能按数学输入那么做

代码代码,带着的石头码!!!
2015-05-03 20:53
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:18 
how old are you?have a change?
#include<stdio.h>
#include<math.h>
int main(void)
{
    int i,j,n=0;
    for(i=100;i<=200;i++){
    int j, s = (int)(sqrt((double)i) + 0.01), step[]={1,4,2,4,1},k=4;
    if (i % 2 == 0||i % 3 == 0||i % 5 == 0||i % 7 == 0||i % 11 == 0)  
    continue;
    for (j = 12; j <= s; j += step[k],k=(k+1)%5)if (i % j == 0) break;  
    j>s?printf("%d ",i):printf("");
    }
}

剑栈风樯各苦辛,别时冰雪到时春
2015-05-03 20:56
Topsail
Rank: 2
等 级:论坛游民
帖 子:18
专家分:13
注 册:2015-4-21
收藏
得分:0 
c语言中没有平方的表述,只能使用j*j。还有你else if后面的条件不对。
2015-05-03 21:40
快速回复:关于求素数的问题
数据加载中...
 
   



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

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