找质数完整版?(小白的练习)

目的很简单,学到哪就稍微用一下刚学的知识,下面是我的代码(其中有些步骤可以简化,就比如在search函数中用指针没什么意义,因为我只需要return“ture or false”如果用指针其实是杀鸡用牛刀,不过只是练习一下学的,所以目的不同代码自然不同,欢迎指教

include <stdio.h>

include<stdlib.h>

void search(int a,int *b,int i)
{
*b = 0;
i = 2;
if (a < 2)
{
*b = 1;
}
else
{
for (i = 2; a % i != 0; i+=1);
if (a == i)
{
*b = 2;
}
else
{
*b = 1;

	}
}

}

int main()
{
int i = 0, b = 0, a = 0, max = 0,yn=0;
int n=0 ;
int p;
while (1) {
printf("请输入第一个数:");
scanf_s("%d", &a);
search(a, &b, i);
if (b == 2) {
printf("请输入想要多少个质数:");
scanf_s("%d", &max);
p = (int
)malloc(max * sizeof(int));
while (i < max) {
search(a, &b, i);
if (b == 2) {
printf("%d ", a);
p[n] = a;
n++;
a++;
i++;
}
else {
a++;

			}

		}break;
	}
	else {
		printf("%d不是质数,", a);
	}
} printf("\n请问是否需要查询特定位置质数,需要请输入1,不需要请输入0\n请输入:");
scanf_s("%d", &yn);
if (yn = 1) {
	do
	{
		printf("请问想查询第几个质数:");
		scanf_s("%d", &n);
		if (n > max) {
			printf("输入的数字无效请重新输入,");
		}
		else {
			printf("第%d个质数是%d", n, p[n - 1]);
		}
	} while (n > max);
	
}
else {
	printf("程序结束,谢谢使用");
}
free(p);

return 0;

}

最后一行free(p),我写只是为了养好习惯,毕竟有借有还再接不难,整体程序确实还有很多优化的地方,希望大佬指教。
闲谈:最近很是懈怠,这跟我之间的经历如出一辙,目标竖得很高但实际却不行动,不过之后我会继续改变自己,达到理想状态。
打油诗
新途伊始志气昂,
昨日云烟今朝放。
不问桃花何处开,
心海静深浪自涌。

posted @ 2024-09-05 22:32  大好きだ  阅读(20)  评论(0)    收藏  举报