随机产生N个四位正整数,将其中的素数选出,并升序排列后输出(以每行M个素数的格式)

原问题:随机产生N个四位正整数,将其中的素数选出,并升序排列后输出(以每行M个素数的格式)
分类:编程开发 > 最后更新时间:【2016-12-16 01:40:46】
问题补充:

c语言实现随机产生N个4位正整数筛选素数升序排列输出的代码

最佳答案

以下程序参考:

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
int prime(int n)
{
int i, k;
k = (int)sqrt((double)n); //提高效率
if(n < 2) //2以下不能是素数
return 0;
for(i = 2; i <= k; i++)
{
if(n % i == 0)
return 0;
}
return 1;
}
int main(void)
{
time_t ti;
int m, n, t, i, j, n1;
int *a;
scanf("%d%d", &n, &m);
a = (int *)malloc(n * sizeof(n)); //动态数组
srand((unsigned) time(&ti)); //随机数发生器
for(i = 0, n1 = 0; i < n; i++) //生成n个
{
t = rand() % 9000 + 1000; //生成n个随机数,1000~9999
if(prime(t))
a[n1++] = t; //只存素数
}
n1--; //上面的n1多加一次的
//排序
for(i = 0; i < n1 - 1; i++)
for(j = i + 1; j < n1; j++)
if(a[i] > a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
//输出
for(i=0;i<n1;i++)
{
printf("%-5d",a[i]);
if ((i+1)%m==0) //每行m个
printf("\n");
}
return 0;
}

输入

100 5

输出

1231 1733 2837 2897 3089
3583 4373 5347 6449 7951
8291 8369 9203 9649

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
9

分享到:

其他回答

暂无其它回答!

    推荐