```c
#include <stdio.h>
int main() {
int i, j, flag
printf("1-20的素数有:")
for (i = 2i <= 20i++) {
flag = 0
for (j = 2j <= i/2j++) {
if (i%j == 0) {
flag = 1
break
}
}
if (flag == 0 &&i != 1) {
printf("%d ", i)
}
}
return 0
}
```
程序的主要斗尘思路是使用两层循环,外层循环遍历1到20之间的整数,内层循环遍历当前数除去1和自身后的所有数,判断是否有整除的空弊禅情况。如果存在因子,则说明该数不是素数,将标志位flag置为1,跳出内层循环。如果内层循环遍历完毕后,flag仍等于0,则说明卜丛该数是素数,将其输出即可。需要注意的是,1不是质数。
输出结果为:
```
1-20的素数有:2 3 5 7 11 13 17 19
```
C语言-寻找素数
附代码:
#include<stdio.h>
#include<math.h>
int main()//原理:设ab=c,a<b,则有a<根号c<b。若设a恒小于根号c,则只需判断碰纳a是否为因数
{
int a, b
printf("请按从小到大输入两个素数:"笑行没)
scanf_s("%d %d", &a, &b)
int n = 0,m=0,sum = 0
double i, j//i是从a到b的待筛选数,j是从2到根号i的除数,要判断j是否为i的因数
for (i = ai <= bi++)
{
m = 0
int c = int(pow(i, 0.5))
for (j = 2j <= cj++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++//m是i被从2到根号i的j除了之后,商为带告整数,即发现j是i的因数的次数
}
}
if (m==0)
{
printf("找到素数:%d\n", int(i))
n++
sum = sum + i
}
}
printf("大于等于%d,小于等于%d的素数的个数为:%d\n", a, b, n)
printf("它们的和为:%d", sum)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)