| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:求素数的问题
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:15 回复次数:7 
求素数的问题
要求1到n中的素数 下面是我的方案 结果是输出5个素数就换行,但是显示的结果确实是5个素数就换行了,但是行与行之间的间距很不一样  难道是编译器的问题?热心的朋友帮黏贴运行下。怎么把显示的结果调整的整齐美观?
//求1到N中得所有素数
#include  <stdio.h>
int  ss(int i);
int  main(void)
{
    int  N;
    int  i;
    int  k = 0;
    scanf("%d",&N);
    if(N <= 1)
        printf("data error!\n");
    for(i = 2;i <= N; i++)
    {
            if(ss(i) != 0)
            {
            printf("%d ", ss( i ));
            k++;
            }
            if(k % 5 == 0)
            {
                printf("\n");
            }
    }
    return  0;
}
int ss(int n)
{   
    int  i;
    int  s;
    int  k = 0;
    for(i = 2; i <= n-1; i++)
    {
        s = n % i;
        if(s > 0)  k++;
    }
      if(k == n-2)
        return n;
      else  
          return  0;

}
搜索更多相关主题的帖子: 朋友 include 编译器 
2011-11-16 00:00
庄学添
Rank: 1
等 级:新手上路
帖 子:12
专家分:6
注 册:2011-11-11
收藏
得分:4 
这样为什么一输入对话框就没了
#include  <stdio.h>
int  ss(int i);
int ss(int n)
{   
    int  i;
    int  s;
    int  k = 0;
    for(i = 2; i <= n-1; i++)
    {
        s = n % i;
        if(s > 0)  k++;
    }
      if(k == n-2)
        return n;
      else  
          return  0;

}
int  main(void)
{
    int  N;
    int  i;
    int  k = 0,a[i];
    scanf("%d",&N);
    if(N <= 1)
        printf("data error!\n");
    for(i = 2;i <= N; i++)
    {
            if(ss(i) != 0)
            {
            a[i]=ss(i);
            k++;
            }
         
    }
   

for(i=0;i<N;i++)
{printf("%d",a[i]);
if(i%5==0)
printf("\n");
}
  return  0;
  }
2011-11-16 00:41
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 庄学添
数组a[]和后面的i循环输出貌似有问题.

梅尚程荀
马谭杨奚







                                                       
2011-11-16 08:48
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:8 
程序代码:
#include  <stdio.h>
int  ss(int i);
int  main(void)
{
    int  N;
    int  i;
    int  k = 0;
    scanf("%d",&N);
    if(N <= 1)
        printf("data error!\n");
    for(i = 2;i <= N; i++)
    {
            if(ss(i) != 0)
            {
            printf("%3d ", ss( i ));
            k++;
             if(k % 5 == 0)
            {
                printf("\n");
            }
            }
    }
    return  0;
}
int ss(int n)
{   
    int  i;
    int  s;
    int  k = 0;
    for(i = 2; i <= n-1; i++)
    {
        s = n % i;
        if(s > 0)  k++;
    }
      if(k == n-2)
        return n;
      else 
          return  0; 

} 
你的问题在于,当k不是时同样也满足k%5==0,就执行 printf("\n");


[ 本帖最后由 heroinearth 于 2011-11-16 09:09 编辑 ]
2011-11-16 09:04
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 heroinearth
你的问题在于,当k不是时同样也满足k%5==0,就执行 printf("\n");


当k不是什么时?
我猜你的意思是n行尾素数和n+1行头素数的差决定了两行之间间距的大小。
有什么办法消除这个影响吗?

梅尚程荀
马谭杨奚







                                                       
2011-11-16 12:57
empyuzhen
Rank: 2
等 级:论坛游民
帖 子:3
专家分:12
注 册:2011-11-15
收藏
得分:1 
回复 5楼 有容就大
每次k重新计数,并关判断是否为0!
2011-11-16 13:26
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:2 
回复 5楼 有容就大
四楼是我帮你改好的,前面没有说清,不好意,我的意思是,当k为5时,这时i不是素数,可k==5还是满足条件,就造成执行printf("\n");
2011-11-16 13:29
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用heroinearth在2011-11-16 13:29:49的发言:

四楼是我帮你改好的,前面没有说清,不好意,我的意思是,当k为5时,这时i不是素数,可k==5还是满足条件,就造成执行printf("\n");
谢谢啊。
原来把换行包含到if(ss(i)!=0)中就可以了。

梅尚程荀
马谭杨奚







                                                       
2011-11-16 17:28
快速回复:求素数的问题
数据加载中...
 
   



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

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