C语言的学习过程,我把它记录下来 | |
---|---|
素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数 | |
首先我用了最笨的办法,依次遍历来查找素数,更高级的办法还在学习 | |
#define _CRT_SECURE_NO_WARNINGS 1 //在VS中使用scanf函数需加入
#include<stdio.h>
int main()
{
int sum1 = 0, sum2 = 0, a = 0;
printf("请输入想要打印素数的范围,以空格分割(如100 200):");
scanf("%d %d", &sum1, &sum2);
if (sum1 < 2) //0和1去除掉,至少从2开始
sum1 = 2;
for (;sum1<=sum2;sum1++) //循环,依次遍历输入的范围。
{
for (a=2;a < sum1;a++) //循环,遍历查找素数
{
if (sum1 % a == 0)
break;
}
if(a>=sum1) //确认是否素数
printf("%d ", sum1); //打印素数
}
return 0;
}
下面这个方法减少了很多循环次数,我们已知能被2整除的不可能是素数,所以如下
#define _CRT_SECURE_NO_WARNINGS 1 //在VS中使用scanf函数需加入
#include<stdio.h>
#include<math.h> //使用了sqrt数学函数,需要此头文件
void temp(int n)//判断n是否为素数
{
int i;
for (i = 2; i <= sqrt(n); i++) //sqrt求平方根,进一步减少运算量
{
if (n % i == 0)break;
}
if (i > sqrt(n))
{
printf("%d\n", n);
}
}
int main()
{
int sum1 = 0, sum2 = 0;
printf("请输入想要打印素数的范围,以空格分割(如100 200):");
scanf("%d %d", &sum1, &sum2);
sum1 < 2 ? sum1 = 2 : sum1; //0和1去掉
sum1 % 2 == 0 ? sum1 += 1 :sum1; //判断输入是否为偶数,如果是就+1
for (; sum1 < sum2; sum1 += 2) //每次自增2,减少运算量
{
temp(sum1); //转移到上面的函数去计算
}
return 0;
}
刚刚看到了更厉害的数学方法,表示看不懂,等以后学会了来更新方法
希望能和大家一起学习、进步,每一个关注和点赞都是我学习的动力,我也会回关回赞的,互相督促共同进步 |
---|
欢迎各位大佬指导提携,感激不尽 |