| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1320 人关注过本帖
标题:素数怎么出错?后添加了ACM题目
只看楼主 加入收藏
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:20 
素数怎么出错?后添加了ACM题目
程序代码:
#include <stdio.h>

int prime(int n)
{
    int i, p = 1, k;
    for(k = 2; k <= n / 2; k++)
        if(i % k == 0)
         {
            p = 0;
            break;
        }
    if(p) return 1;
    else return 0;
}

int main()
{
    int i;
    for(i = 2; i <= 100; i++)
        if(prime(i)) printf("%d\n", i);
    return 0;
}


[ 本帖最后由 Buger 于 2013-5-13 15:41 编辑 ]
搜索更多相关主题的帖子: color 
2013-05-13 13:47
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
收藏
得分:0 
顶1
2013-05-13 13:56
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
收藏
得分:0 
顶2
2013-05-13 14:03
小小的C
Rank: 2
等 级:论坛游民
帖 子:31
专家分:22
注 册:2013-4-19
收藏
得分:0 
子函数中i是神马呀。而且2也不是质数,1是质数。

新手发言,勿怪。
2013-05-13 14:14
shenwenbin
Rank: 2
来 自:江苏省淮安市淮安区
等 级:论坛游民
帖 子:8
专家分:15
注 册:2013-5-11
收藏
得分:0 
回复 楼主 Buger

#include <stdio.h>

int prime(int n)
{
    int  p = 1, k;
    for(k = 2; k < n; k++)
        if(n % k == 0)
         {
            p = 0;
            break;
        }
    if(p) return 1;
    else return 0;
}

int main()
{
    int i;
    int prime(int n);
    for(i = 2; i <= 100; i++)
        if(prime(i))
            printf("%d\n", i);
    return 0;
}     你用我帮你改后的代码运行运行!自己看看那些地方不一样
2013-05-13 14:55
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
收藏
得分:0 
哦哦....那为什么这题错了呢?
程序代码:
素数距离问题
时间限制:3000 ms  |  内存限制:65535 KB

难度:2
描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。

 如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。样例输入3
6
8
10
样例输出5 1
7 1
11 1

我的代码:
#include <stdio.h>
#include <math.h>

int prime(int n)
{
    int p = 1, k;
    for(k = 2; k <= n / 2; k++)
        if(n % k == 0)
        {
            p = 0;
            break;
        }
    if(p) return 1;
    else return 0;
}

int main()
{
    int n, m, min, j, i, t;
    scanf("%d", &n);
    while(n--)
    {
        min = 1000008;
        scanf("%d", &m);
        for(i = 2; i <= 10005; i++)
            if(prime(i))
            {
                t = abs(m - i);
                if(t < min)
                {
                    min = t;
                    j = i;
                }
            }
        printf("%d %d\n", j, min);
    }
    return 0;
}

地址:
http://acm.

2013-05-13 15:39
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
收藏
得分:0 
顶3...(我不是故意顶的)
2013-05-13 15:48
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
文网文问问
2013-05-13 15:54
Buger
Rank: 1
等 级:新手上路
帖 子:60
专家分:7
注 册:2013-3-20
收藏
得分:0 
????。。。
2013-05-13 15:55
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
 for(i = 2; i <= 10005; i++)

为什么只算到10005?很明显素数应该更大

坐等改了这个错误之后TLE
2013-05-13 15:56
快速回复:素数怎么出错?后添加了ACM题目
数据加载中...
 
   



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

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