当前位置: 代码迷 >> C语言 >> [求助]关于素数问题各位来看看
  详细解决方案

[求助]关于素数问题各位来看看

热度:132   发布时间:2006-11-19 15:40:15.0
[求助]关于素数问题各位来看看

题目是:随机抽100个随机数s[100],把不是素数的放到B中;
我是这样做的,但是不对所以求助各位,希望大家帮忙,在此小弟先谢谢了~!
#include <stdio.h>
#include <stdlib.h>
main ()
{ int s[100],b[100],i,k,j;

clrscr();
for(i=0;i<100;i++)
{ k=rand()%200;
s[i]=k;
}
printf("the original arry:\n");
for(i=0;i<100;i++)
{ printf("%4d",s[i]);
if((i+1)%10==0)
printf("\n");
}
for(i=0;i<100;i++)
{ for(j=2;j<s[i];j++)
{ if(j<s[i])
b[j]=s[i];
j++;
}
}
for(i=0;i<100;i++)
{printf("%4d",b[i]);
if((i+1)%10==0)
printf("\n");
}

}

小弟刚刚学到数组对数组刚刚了解所以不了解请原谅

搜索更多相关的解决方案: 素数  

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

加上srand(time(NULL));

k=rand()%200+2;

连素数判断都没有,怎么输出素数.

for(i=0;i<100;i++)
{ for(j=2;j<s[i];j++)
{ if(j<s[i])
b[j]=s[i];
j++;
这个是错误的.


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

#include <stdio.h>
#include <stdlib.h>
main ()
{ int s[100],b[100],i,k,j;

clrscr();
for(i=0;i<100;i++)
{ k=rand()%200;
s[i]=k;
b[i]=0;
}
printf("the original arry:\n");
for(i=0;i<100;i++)
{ printf("%4d",s[i]);
if((i+1)%10==0)
printf("\n");
}
for(i=0;i<100;i++)
{ for(j=2;j<s[i];j++)
{ if(s[i]%j==0)
b[i]=s[i];
continue;
}
}
printf("b[100]:\n");
for(i=0,k=0;i<100;i++)
if(b[i]!=0)
{printf("%4d",b[i]);
if((++k)%10==0)
printf("\n");
}

}


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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main ()
{
int s[100],b[100],i,k,j;
for(i=0;i<100;i++)
{ k=rand()%200;
s[i]=k;
b[i]=0;
}
printf("the original arry:\n");
for(i=0;i<100;i++)
{ printf("%4d",s[i]);
if((i+1)%10==0)
printf("\n");
}
for(i=0;i<100;i++)
{ for(j=2;j<sqrt(s[i])+1;j++)
{ if(s[i]%j==0)
b[i]=s[i];
continue;
}
}

for(i=0,k=0;i<100;i++)
if(b[i]!=0)
{printf("%4d",b[i]);
if(i%10==0)
printf("\n");
}

}


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

/*是没有素数判断啊,加了一个素数判断的函数,并给数组b全赋为0,其他没怎么改*/

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

int prime(int num) /*定义素数判断函数*/
{ int i,flag=1;
for(i=2;i<=sqrt(num);i++)

if(num%i==0)
{
flag=0;
break;
}

if(flag==1)
return 1;
else if(flag==0) /*是素数返回1,不是返回0*/
return 0;
}

void main()
{
int s[100],b[100],i,k,n=0;
int flag=1;

clrscr();
for(i=0;i<100;i++)
{ k=rand()%200;
s[i]=k;
b[i]=0; /*将数组b全赋为0以区别*/
}
for(i=0;i<100;i++)
{
printf("%4d ",s[i]);
if((i+1)%10==0)
printf("\n");
}
for(i=0;i<100;i++)
{
flag=prime(s[i]);
if(flag==1)
{
b[n]=s[i];
n++;
}

}
printf("-----------------------------------------------------\n") ;
for(i=0;i<100;i++)
{
printf("%4d ",b[i]);
if((i+1)%10==0)
printf("\n");
}

getch();

}


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