#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();
}
----------------解决方案--------------------------------------------------------
质数是指除了能被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);
}
}
}
----------------解决方案--------------------------------------------------------