C语言判断素数

如题所述

1,首先了解素数的定义,一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。2,以下是C语言程序。

#include "stdio.h"
int main()
{
int n,flag=1,i;
scanf("%d",&n);//输入一个数n,判断它是否是素数。 
for(i=2;i<n;i++) 
{
if(n%i==0)// 根据素数的定义n依次除以小于它本身大于1的数 
flag=0;//一旦有能被整除的数,表明 n不是素数,使得flag=0 。 
}
if(flag==0)//根据flag的值判断n是否是素数 
printf("%d不是素数",n); 
else
printf("%d是素数",n); 
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-02-07
同学你好!
你这里的问题有几个:
1.头文件错误;
2.printf后面不跟分号;
3.for语句逻辑错误;
下面是我改过的:(结果正确)
#include<stdio.h>

main()
{
int m,i,k;
scanf("%d",&m);
k=m;
for(i=2;i<k;i++)/*注意这里!这里的限制条件出错了!*/
if(m%i==0)
break;
if(i>=k)/*这里也是*/
printf("%d是素数",m);/*原来你这里少了;*/
else
printf("%d是合数",m);
}

希望我的回答对你有帮助,祝你的成绩进步!
第2个回答  2018-12-10

真实的算法是:得到整数n,如果要判定n是否属于素数,应当用2~根号n这些整数依次与n相除,如果都不能整除,则判断为素数。但在计算机中开方运算需要用sqrt函数,并且要求输入参数为double型,并且结果也是double型,因此可简化运算以便提高计算速度,即因为n/2大于等于根号2,因此用2~n/2来进行运算,可以更加高效。用%即求模运算,或说求两整数相除的余数,用余数是否为0来判断是否整除

int n,j,b;
scanf("%d",&n); b=1; for ( j=2;j<=n/2;j++ ) if ( n%j==0 ) { b=0;break; }
if ( b==0 ) printf("%d不是素数\n",n); else printf("%d是素数\n",n);

本回答被网友采纳
第3个回答  2010-02-07
你的头文件名写错了~是stdio.h~呵呵,马虎了吧
你的if(i>k)printf("%d是素数",m)后面缺一个分号;
#include<stdio.h>
#include<math.h>
int main()
{
int m,i,k;
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)printf("%d是素数",m);
else printf("%d是合数",m);
}
编译通过
第4个回答  2020-06-03

介绍三种使用C语言来判断素数的方法,以及用做素数表来判断找素数的方法。