原代码写的很不错,以下是按你要求改的,辛苦打来,望采纳,谢谢!
#include <stdio.h>#include<time.h>
#include<stdlib.h>
#include<math.h>
int prime(int x)
{
int i,n
for(i=2i<=(int)sqrt(x)i++)if(x%i==0)return 0
return 1
}
void main()
{
int n=0,i=0,j=0
char counter=1
int sum=0
srand(time(0))
n=rand()%100+1/*随机函数*/
printf("产生的随机数为%d\n",n)
if(n>2)
{
printf("%4d",2)
j++
}
for(i=3i<=ni+=2)
{
if(prime(i)==1)
{
printf("%4d",i)
counter++
sum+=i
if(j!=0 && ++j%10==0)
{
printf("\n")
}
}
}
printf("\n")
printf("序列中素数的个数为%d\n",counter)
printf("序列中素数的平均值为%0.4f\n",(float)sum/(float)counter)
}
如果一个数是素数,只要判断他是否能被2到这个数的开方之间的数整除就行了。
int flag=0
if(m==2){ //先判断是不是2
flag=1
}
else{
for(int i=2i<=sqrt(m)i++){
flag=1
if(m%i==0){ //不是素数
flag=0
break
}
}
}
return (flag==1)?m:-1//判断是否为1,为1输出m,否则输出-1 ,-1表示不是素数
如果是求某个范围的素数,可以连续调用这个方法,上面是常规的方法,还有更好的方法自己去查一下。