| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1901 人关注过本帖
标题:输出素数的代码出现了问题,大家帮忙看一下,我用的c语言 vc编译器
只看楼主 加入收藏
学c加油
Rank: 1
来 自:山东济宁泗水
等 级:新手上路
帖 子:24
专家分:0
注 册:2016-7-20
收藏
得分:0 
回复 10楼 书生牛犊
能不能把代码写给我,谢谢

学习c语言的新手,各位多多照顾
2016-07-20 15:54
学c加油
Rank: 1
来 自:山东济宁泗水
等 级:新手上路
帖 子:24
专家分:0
注 册:2016-7-20
收藏
得分:0 
回复 9楼 书生牛犊
对对对,我知道了!!!太感谢您了!!!

学习c语言的新手,各位多多照顾
2016-07-20 15:55
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
程序代码:
#include<stdio.h>
int main(void) {
    int a[101];
    for(int i=2; i<101; i++) { //初始化
        a[i]=1;
    }
    for(int i=2; i<101; i++) {
        if(!a[i])continue; //如果这个数不是素数,那就跳过
        for(int j=2; j*i<101; j++) { //一百以内i的倍数标记为不是素数
            a[j*i]=0;
        }
    }
    for(int i=2; i<101; i++) {
        if(a[i])printf("%d ",i);
    }
    return 0;

}



[此贴子已经被作者于2016-7-20 16:17编辑过]


φ(゜▽゜*)♪
2016-07-20 16:15
蝴蝶扣
Rank: 2
等 级:论坛游民
威 望:1
帖 子:52
专家分:76
注 册:2016-7-18
收藏
得分:0 
回复 楼主 学c加油
我觉得你的程序有点复杂,为了减少遍历的次数,可以对每一个数字开方,下面标记★的位置,你可以看看
#include<stdio.h>
#include<math.h>
void main()
{
    int i,a;
    float t;
    printf("输出1~1000的所有素数:\n");
    for(a=2;a<=1000;a++)
    {
        t=sqrt(a);★
        for(i=2;i<=t;i++)★
        {
            if(a%i==0)
                break;
        }
        if(i<=t)
            printf("");//这里只是个双引号,表示什么也不输出,当然也可以改成    if(i>t)  printf("%d  ",a);,你怎么好理解就怎么着吧。
        else
            printf("%d  ",a);
    }
    printf("\n");
}
2016-07-25 18:50
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:0 
程序代码:
if (a[i] % a[j] == 0) { // 这里错了
    a[i] = 0;
    break;
}


当你把某个 a[i] 的值置 0 的时候,下次循环到这个位置时,就变成 a[i] % 0 了

Read The Fucking Source Code~
2016-07-25 22:12
liuwen0721
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2016-7-14
收藏
得分:0 
2016-07-29 16:43
平常心q
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:120
专家分:550
注 册:2016-3-31
收藏
得分:0 
# include <stdio.h>
# include <math.h>
# define N 101

int main(void)
{
    int i, j, line, a[N], sum = 0;
    for(i=2;i<N;i++)
        a[i] = i;
    for(i=2;i<sqrt(N);i++)
        for(j=i+1;j<N;j++)
        {
            if(a[i] != 0 && a[j] != 0)
                if(a[j] % a[i] == 0)
                    a[j] = 0;
        }
        for(i=2,line=0;i<N;i++)
        {
            if(a[i] != 0)
            {
                sum += a[i];
                printf("%3d", a[i]);
                line++;
            }
            if(line == 10)  //每10个换行
            {
                printf("\n");
                line = 0;
            }
        }
    printf("\nsum = %d\n", sum);

    return 0;
}
2016-07-29 18:18
快速回复:输出素数的代码出现了问题,大家帮忙看一下,我用的c语言 vc编译器
数据加载中...
 
   



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

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