素数的一个小问题,求好方法,谢谢。
题目是这样的:从键盘输入正整数m和n,将m到n之间的所有素数存入数组s中,并将s中元素5个一行输出。程序代码:
# include <stdio.h> # include <malloc.h> int find(int ,int ); //函数的功能是找出这个区间里面素数的个数 int main (void) { int m , n; int k = 0; printf("输出你想求取的区间(m,n)中间空格隔开: "); scanf ("%d %d", &m,&n); int * s; s = (int *)malloc(sizeof(int) * find(m,n)); //生成一个 存放 找到的 素数 的动态数组 for(int i = m; i<n; i++) { for(int j = 2 ; j<i ; j++) { if( i % j == 0) { break; } } if(i == j) { *(s+k) = i; k++; } } for (int q = 0; q<find(m,n); q++) //按每行五个输出,这个方法感觉丑死了,像一些有for语句 { //输出一些特定图形的方法感觉很神奇,就 是学不会~ TT printf("%d ", *(s+q)); if((q+1) % 5 == 0 && q != 0) { printf("\n"); } } return 0; } int find(int m, int n) { int len = 0; for(int i = m; i<n; i++) { for(int j = 2 ; j<i ; j++) { if( i % j == 0) { break; } } if(i == j) { len ++; } } return len; }