用c语言求100-200中的素数
用c语言求100-200中的素数,求详细的解答。在代码后请以附加详细的解释。 /*质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;
*/
#include<stdio.h>
main(void)
{
int num1, num2;
int i,j;
int flag=0;//用来标记是否为素数
printf("请输入2个数:");
scanf("%d %d", &num1, &num2);
for (i=2; i<=num2; i++) //i是一个大于1的自然数,所以从2开始,以num2 为最大数
{
for (j=1; j<i; j++)
{
if(j!=1) //素数是大于1的自然数,先排除1
{
if (i%j ==0) //是否能被其j-i之间的任意数整除
{
flag=0;//不是素数
break;
}
}
flag=1; //是素数
}
if (flag==1)//是否为素数
{
if (i>=num1 && i<=num2) //是否在筛选的范围内
printf("%d\n", i);
}
}
return 0;
} #include <stdio.h>
int is_prime_number(int num)
{
for(int i = 2; i <= num / 2; i++)
{
if(num % i == 0)
return 0;
}
return 1;
}
int main(void)
{
for(int i = 100; i <= 200; i++)
{
if(is_prime_number(i) == 1)
printf("%d ", i);
}
putchar('\n');
return 0;
}
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
请按任意键继续. . . 人造人 发表于 2017-6-21 13:04
还没有那么高深,只知道一些简单的,,有没有更简单点的? ba21 发表于 2017-6-21 12:30
/*
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;
*/
flag是什么意思呢?看懂很多了,表示感谢。 一楼回答的很好了 3231991562 发表于 2017-6-21 18:22
flag是什么意思呢?看懂很多了,表示感谢。
flag就是一个标志 用来存放 0 或 非0 。0 不是素数, 1是素数;这要看你的思路是怎么构思的。你也可以用 非0 表是不是素数, 0表示素数。 3231991562 发表于 2017-6-21 18:22
flag是什么意思呢?看懂很多了,表示感谢。
flag是定义的一个变量名,用来存放结果0或非0的 3231991562 发表于 2017-6-21 18:18
还没有那么高深,只知道一些简单的,,有没有更简单点的?
好像没有 ba21 发表于 2017-6-21 20:15
flag就是一个标志 用来存放 0 或 非0 。0 不是素数, 1是素数;这要看你的思路是怎么构思的。你也可以 ...
可是电脑要怎么识别这个是素数还是非素数 3231991562 发表于 2017-6-21 22:17
可是电脑要怎么识别这个是素数还是非素数
我的天呐!
一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数
假如有:1, 2, 3, 4, 5, 6, 7, 8, 9, 10;现在要算9是不是素数:
9 % 2 = 0; //取余数 = 0 ;就叫整除。 这里不能,继续
9 % 3 = 0;// 这里 除以 3 能整除,说明不是素数。反则一路这样取余,直到 自身 为止
本帖最后由 当前时区00 于 2017-7-11 09:55 编辑
人造人 发表于 2017-6-21 13:04
请问 函数里面 为什么是 i <= num / 2判断素数 应该是 i<=num-1 么? 当前时区00 发表于 2017-7-11 09:52
请问 函数里面 为什么是 i
i<=num-1 也可以 人造人 发表于 2017-7-11 10:00
i
谢谢 如果不用函数调用 可以完成这种批量的素数判断吗 当前时区00 发表于 2017-7-11 10:18
谢谢 如果不用函数调用 可以完成这种批量的素数判断吗
当然可以
#include <stdio.h>
int main(void)
{
int flag;
for(int i = 100; i <= 200; i++)
{
flag = 1;
for(int j = 2; j <= i / 2; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("%d ", i);
}
putchar('\n');
return 0;
}
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
请按任意键继续. . . 人造人 发表于 2017-7-11 10:36
当然可以
谢谢 #include <> #include <studio.h>
#include <math.c>
整形 i, n
当n从100到200时
当i从2到(int)sqrt(n)时
判断有无n%i==0
有则n为合数
无则n为素数
页:
[1]