用C语言如何判断素数

 我来答
自我编程
2018-06-26 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

素数又称质数。

定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

#include<stdio.h>
int main( )
{
    int num,i;
    scanf("%d",&num);
    for(i=2;i<=num;i++)
        if(num%i==0 && num!=i)
        {
            printf("不是质数\n");
            return 0;
        }
    printf("是质数\n");
    return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
易水飞霜
2018-06-26 · TA获得超过1062个赞
知道小有建树答主
回答量:227
采纳率:80%
帮助的人:124万
展开全部
如果数字比较小,可以用2到这个数每个除一遍。
for(i=2;i<n;i++) if(n%i==0) {printf("不是素数"); break;}
如果数字比较大,可以先用sqrt将数字开方,然后从2开始用素数进行除法运算。这个思路根据题目要求的不同,优化写法也不一样。
比如,你给的题目是求一个数是不是素数,那么就先计算2,再计算3,5,7,9……一直到这个数的开方值。好处是减少了近一半的计算量(大于开方值的不进行计算,大于2的偶数也不计算)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楚君宏
2018-06-29
知道答主
回答量:1
采纳率:0%
帮助的人:847
展开全部
#include "stdio.h"
void main (void)
{
int p = 1;
int i,j,a=1;
while (p)
{
printf ("请输入一个正整数来判断是不是素数,以回车键结束:\n");
scanf ("%d",&j);

if (j==1)
printf ("%d:不是素数\n",j);
else
{
for (i=2;i<j;i++)
if (j%i==0)
{
printf ("因式:%d\t/%d\t=%d\n",j,i,j/i);
a=0;
}
if (a)
printf ("%d:是素数\n",j);
else
printf ("%d:不是素数\n",j);
}
printf ("\n");
printf ("如需退出请关闭,否则继续\n");
printf ("\n");

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
咖啡猫爱踩鱼
2018-06-27
知道答主
回答量:34
采纳率:50%
帮助的人:12万
展开全部
int isprime(int n){

int i=2;
for(;i<=sqrt(n);i++)
if(n%i == 0)
return 0;
return 1;
}
这个是用于判断是不是素数的子函数,输入是待判断的数字n,返回值为0则不是素数,返回值为1则为素数。
需要在头文件加#include<math.h>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心若初見
2018-07-12 · 超过28用户采纳过TA的回答
知道答主
回答量:45
采纳率:100%
帮助的人:28.3万
展开全部
判断质数的方法有很多种,就我们学的定义而言,就是从2开始,一直到开跟的数,如果能整除就非质数。

int i=3,n;
while(scanf("%d",&n))
{
if(n==2||n==3)
printf("%d 为质数\n",n);
else if(!(n%2))
printf("%d 为合数\n",n);
else if(n<2)
printf("%d 非质非合\n",n);
else
while(i<n)
{
if(!(n%i)) //整除了
{
printf("%d 为合数\n",n);
break;
}
if(i>sqrt(n))
{
printf("%d 为质数\n",n);
i=3;//下次循环初始化。
break;
}
i+=2;//因为+1一定为偶数,连2都不能整除,那么直接排除掉了,减少运算。
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式