当前位置: 代码迷 >> C语言 >> [求助]小弟初学C语言,请教求质数的问题
  详细解决方案

[求助]小弟初学C语言,请教求质数的问题

热度:180   发布时间:2007-04-11 13:06:54.0
[求助]小弟初学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语言  质数  初学  

----------------解决方案--------------------------------------------------------
质数是指除了能被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();
}
改成这样就可以了


----------------解决方案--------------------------------------------------------
楼上的不错啊
----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

#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编辑过]


----------------解决方案--------------------------------------------------------
#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;
}
}着是我的,不过只能检查你输入的是不是质数。

----------------解决方案--------------------------------------------------------
看大家弄的这些,好羡慕,真的,
----------------解决方案--------------------------------------------------------
#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");
}
----------------解决方案--------------------------------------------------------

知道了
谢谢各位赐教啊


----------------解决方案--------------------------------------------------------

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

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);
}
}

}


----------------解决方案--------------------------------------------------------
  相关解决方案