c 求素数

wnhh 2011-11-11 04:23:55
int i, k, m;
int leap = 0;
int counter = 0;

for(i = 2; i <= 100; i++)
{ leap = 0;
m = sqrt((float)i);
for(k = 2; k <= m; k++)
if(i % k == 0)
leap = 1;
if(leap == 0)
{
counter += 1;
//printf(" '%d ", counter);
printf("%d ", i);
}
if(counter % 5 == 0)
printf("\n");

}//求100以内的素数,每5个元素换一行。但换行 不正确,中间有大块空白?怎么回事
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzhwisk 2011-11-13
  • 打赏
  • 举报
回复
这个很简单,我会做
wnhh 2011-11-11
  • 打赏
  • 举报
回复
哦, 原来是这样
無_1024 2011-11-11
  • 打赏
  • 举报
回复

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main ()
{
int i, k, m;
int leap = 0;
int counter = 0;

for(i = 2; i <= 100; i++)
{
leap = 0;
m = (int)sqrt((double)i);
for(k = 2; k <= m; k++)
{
if(i % k == 0)
leap = 1;
}
if(leap == 0 )
{
counter += 1;
//printf(" '%d ", counter);
printf("%5d", i);
if(counter % 5 == 0)
printf("\n");
}
}//求100以内的素数,每5个元素换一行。但换行 不正确,中间有大块空白?怎么回事
return 0;
}


测试NULL 2011-11-11
  • 打赏
  • 举报
回复
找到原因了,请看注释
建议楼主给每个循环语句,if语句都加大括号 {},这样结构看得更清楚

#include <stdio.h>
#include <math.h>

int main()
{
int i, k, m;
int leap = 0;
int counter = 0;

for(i = 2; i <= 100; i++)
{
leap = 0;
m = (int)sqrt((float)i);
for(k = 2; k <= m; k++)
{
if(i % k == 0)
{
leap = 1;
}
}
if(leap == 0)
{
counter += 1;
printf("%d ", i);

if(counter % 5 == 0) /*放这里就OK了*/
{
printf("\n");
}
}
/*
if(counter % 5 == 0) 放外面,不是素数的情况下counter%5==0也会输出换行
{
printf("\n");
}
*/
}
return 0;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧