素数的定义:素数是能被1整除又能被自身整除的数叫做素数。
第一种方法:
假设有n个数,我们要判断在(n-1),中是否有其他被整除的数,如果有这个数就不是素数。顾我们要用到 for 循环语句;编程如下;编程用到了,我们定义了一个标志(flag);
#include <stdio.h>
int main()
{
int n;
int flag = 0; // 0 是素数 1 不是素数
scanf ("%d", &n);
int i;
for (i = 2; i < n; i++)
{
if (n % i == 0) // 不是素数
{
flag = 1;
break; // 跳出当前的循环
}
}
if (flag == 1)
printf ("%d不是素数\n", n);
else
printf ("%d是素数\n", n);`
return 0;
}
第二种方法是:根号法,根号法的特点是工作量少,我们只需要根号的值来比较前面的值;这样我们的效率得到大大的提高;
编码如下:
#include <stdio.h>
int main()
{
int n;
int flag = 0; // 0 是素数 1 不是素数
scanf ("%d", &n);
int i;
int k = sqrt(n);
for (i = 2; i <= k; i++)
{
if (n % i == 0) // 不是素数
{
flag = 1;
break; // 跳出当前的循环
}
}
if (flag == 1)
printf ("%d不是素数\n", n);
else
printf ("%d是素数\n", n);
return 0;
}
这里我们有一个小例子,这里面还有一个 每4个一行 每个数占4位 编程的方式可以进行学习
/*
求100到200之间的素数。
输入:无
计算: 求素数
输出: 输出素数 每4个一行 每个数占4位
*/
int main6()
{
int i;
int j;
int flag = 0;
int count = 0;
for (i = 100; i <= 200; i++)
{
int k = sqrt(i);
flag = 0;
for (j = 2; j <= k; j++)
{
if (i % j == 0)
{
flag = 1;
break; // 只会跳出一层循环
}
}
if(flag != 1)
{
if (count++ % 4 == 0)
putchar ('\n');
printf ("%4d", i);
}
}
putchar ('\n');
return 0;
}