用C语言如何判断素数
98个回答
展开全部
#include "stdio.h"
int main()
{
int n,flag=1,i;
scanf("%d",&n);//输入一个数n,判断它是否是素数。
if(i>1){//素数是大于1的
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;
}
else{
printf("%d不在素数范围内",n);}
}
int main()
{
int n,flag=1,i;
scanf("%d",&n);//输入一个数n,判断它是否是素数。
if(i>1){//素数是大于1的
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;
}
else{
printf("%d不在素数范围内",n);}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如这个数为n,简单解释一下这个代码,首先判断素数只需要知道他能不能被一个除1和他本身的数整除,因此我们只需要遍历 2~n这些数,看有没有能被n整除的数,但是我们再进一步想,其实只需要到根号n就可以了,举个例子:6,我们只需要遍历到2,因为6/2=3,6/3=2。最后我们还需要排除一下n=1的情况,因为1既不是质数,也不是合数。将这个思路封装成函数,is_prime(6)会返回0,is_prime(3)会返回1
int is_prime(int n)
for(int i=2;i*i<=n;i++){
if(n%i==0 ) return 0;
return n!=1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
素数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
如上定义得出最简单粗暴的解法(也是最容易理解的)
bool isPrime( int temp)
{
int i;
int prime=temp;
for( i=2 ; i<prime; i++)
{
if( prime%i ==0)//求余得0则能被整除
return FALSE;
}
return TRUE;
}
上述函数传变量temp函数会返回真假值判断是否素数
理解更深的可以简化计算机的运算这里我就不写了,需要的话再跟你写。
如上定义得出最简单粗暴的解法(也是最容易理解的)
bool isPrime( int temp)
{
int i;
int prime=temp;
for( i=2 ; i<prime; i++)
{
if( prime%i ==0)//求余得0则能被整除
return FALSE;
}
return TRUE;
}
上述函数传变量temp函数会返回真假值判断是否素数
理解更深的可以简化计算机的运算这里我就不写了,需要的话再跟你写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
void prime_number()
{
int i = 0;
int j = 0;
unsigned int a = 0;
printf("\n输入一个自然数:\n");
scanf("%u", &a);
//素数就是除了1和a本身外没有其他因数
for (i = 2; i < a; i++)
{
if (0 == a%i)
{
printf("%u 不是一个质数\n", a);
return;
}
}
printf("%u %s一个质数\n", a, 1==a?"不是":"是");
return;
}
int main(int argc, char *argv[])
{
prime_number();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对单个数进行判断是否为素数的话,可以使用循环判断 [2, sqrt(x)] 中的所有整数是否能将 x 除尽。如果没有能整除 x 的数那 x 就是素数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询