| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1048 人关注过本帖
标题:[求助]小弟初学C语言,请教求质数的问题
只看楼主 加入收藏
blueblooded
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-9
收藏
 问题点数:0 回复次数:9 
[求助]小弟初学C语言,请教求质数的问题
题目:求3到100之间的质数,我这样写为什么不对呢?
#include<stdio.h>
main()
{
int i,j,n[100];
for(i=0;i<=99;i++)
n[i]=i+1;
for(j=2;j<=10;j++)
for(i=2;i<=99;i++)
{if(n[i]%j==0)
n[i]=0;
}
for(i=2;i<=99;i++)
{if(n[i]!=0)
printf("\n%d",n[i]);
}
getchar();
}
搜索更多相关主题的帖子: C语言 质数 初学 
2007-04-11 13:06
lxzx36
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-4-9
收藏
得分:0 
质数是指除了能被1和自己整除.别的都不能整除的数.
你做了这样的循环
for(j=2;j<=10;j++)
for(i=2;i<=99;i++)
这样的循环使得10以内的数字都能被自己整除,余0
然后给他赋值为0,最后不打印
#include<stdio.h>
main()
{
int i,j,n[100];
for(i=0;i<=99;i++)
n[i]=i+1;
for(j=2;j<=10;j++)
for(i=1;i<=99;i++)
{if(n[i]%j==0&&n[i]!=j)
n[i]=0;
}


for(i=1;i<=99;i++) /*这里得i要等于 1不然你得2就得不 出因为你得2这个数字存放再s[1]里*/
{if(n[i]!=0)
printf("%4d",n[i]);
}
getchar();
}
改成这样就可以了

2007-04-11 13:34
liuminghui
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:2882
专家分:0
注 册:2007-1-26
收藏
得分:0 
楼上的不错啊

海鸽 is My Lover!!
2007-04-11 13:36
zhoulikelvjj
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2007-4-10
收藏
得分:0 

10以内的质数你的都没找出来。。for(j = 2;j <= 10;j++)前加个条件语句。分出10以内的才对!!!
潭浩强出的书里就有这么个程序,比较简洁!

2007-04-11 13:48
Javal
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2006-5-7
收藏
得分:0 

#include<stdio.h>
#define SIZE 98
#define TRUE 1
#define FALSE 0

int main(void)
{
int iI = 0;
int iJ = 0;
int iCnt = 0;
int iFlag = FALSE;
int iArray[SIZE];

for (iI = 0; iI < SIZE; ++iI)
{
iArray[iI] = iI + 3;
}

printf("输出3-100之间的素数:\n");
for (iI = 0; iI < SIZE; ++iI)
{
iFlag = FALSE;
for (iJ = 2; iJ < (iArray[iI]/2 + 1); ++iJ)
{
if ( iArray[iI] % iJ == 0)
{
iFlag = TRUE;
}
}
if (! iFlag)
{
printf("%d\t", iArray[iI]);
++iCnt;
if (iCnt % 6 == 0)
{
putchar('\n');
}
}
}
printf("\n一共有%d个素数。\n", iCnt);

return 0;
}

我写的一个,你看看

[此贴子已经被作者于2007-4-11 13:58:01编辑过]


猝然临之而不惊,无故加之而不怒 /?spaced" target="_blank">Linux C资料
2007-04-11 13:55
初心者1号
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-3-31
收藏
得分:0 
#include<stdio.h>
void main()
{
int n,k=2;
printf("请输入一个正整数");
scanf("%d",&n);
printf("%d=",n);
while(n>=k)
{
while(n%k!=0)
{
k++;
}
printf("*%d",k);
n/=k;
}
}着是我的,不过只能检查你输入的是不是质数。
2007-04-11 20:36
如影随形
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-13
收藏
得分:0 
看大家弄的这些,好羡慕,真的,

2007-04-13 12:07
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
收藏
得分:0 
#include<stdio.h>
void main()
{
int i,j,n=0,a,b;
int flag=0;
printf("请输入两个数字a,b:"); //输入范围
scanf("%d%d",&a,&b);
for(i=a;i<=b;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
{
printf("%d\t",i);
n++;
if(n%5==0) //控制每行输出的素数
{
printf("\n");
}
}
else
{
flag=0;
}
}
printf("\n");
}

2007-04-13 14:17
blueblooded
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-9
收藏
得分:0 

知道了
谢谢各位赐教啊

2007-04-13 16:45
杨过
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-13
收藏
得分:0 

我以前写的 你可以参考下:

main()
{
int i,j;
for(i=3;i<=100;i++)
{
for(j=2;j<i;j++)
{
if (i%j==0) break;
else ;
if (j==i-1) printf("%d ",i);
}
}

}

2007-04-13 16:49
快速回复:[求助]小弟初学C语言,请教求质数的问题
数据加载中...
 
   



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

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