素数又称质数,是指除了1和和她本身之外,不能再被任何整数整除的数。
判断素数:
如果n不能被2~(n-1)的任何一个整数整除,则n为素数。
——简化:只须将n被2~n/2的整数除即可,甚至只须被2~√n的整数除即可,若n不能被其中的任何一个整数整除,则n为素数。
(一)
#include<stdio.h>
int main()
{
int n,i,k=0;
printf("请输入一个整数:");
scanf("%d",&n);
for(i=2;i<n;i++);//i从2~n-1 变化
{
if(n%i==0)//判断n能否被i整除
k++;//若能则k值加一
}
if(k==0)
printf("%d是素数\n",n);
else
printf("%d不是素数\n",n);
return 0;
}
变形题:
从控制台输入整数n(n>=1),计算并输出从1到n之间(包括n)个位为1的所有素数,若没有符合要求的素数,则输出-1。
【输入形式】
从控制台输入整数n。
【输出形式】
按照从小到大的顺序,在一行上输出1到n之间(包括n)个位为1的所有素数,素数之间用一个空格分隔,若没有符合要求的素数,则输出-1。
#include <stdio.h>
#include <math.h>
int main()
{
int n,k,i,j,x=0;
scanf("%d",&n);//输入n
for(i=2;i<=n;i++)
{
if (i%10!=1)//判断i的个位数是否为1
;
else
{
k=sqrt(i);
for(j=2;j<=k;j++)
{
if(i%j==0)
break;//若i能被j整除,跳出内层for循环
}
if(j<=k)
;
else
{
printf("%d ",i);
x++; //若j>K,则输出素数i,并执行x+1
}
}
}
if(x==0)
printf("-1");//若x=0(即没有符合的素数),输出-1
return 0;
}