c语言:输入一个整数判断素数的问题。

2025-02-27 06:34:24
推荐回答(5个)
回答1:

从2开始到n的算法平方根y(即y>0,并且y*y=n)之间的每一个数去除n如果发现有一个数可以整除n,就说明这不是一个素数,此时就可以提前结束判断返回结果,否则。如果这个范围内的所有整数都无法整除n,那么这个数字n就是素数,例子:

//---------------------------------------------------------------------------

#include
#include

int main(void)
{
int n,i;
scanf("%d",&n);
for (i=2; i<=(int)sqrt(n); i++) {
if (n%i==0) {
printf("%d不是素数\n",n);
i=n+1;/*设置标记*/
break;
}
}

if (i!=n+1) {
printf("%d是素数\n",n);
}
return 0;
}
//---------------------------------------------------------------------------

回答2:

我感觉你对什么是素数理解的稍微有点问题:只能被1和它本身整除的数是素数。例如1,2,3,5,7,13,而你所举的20并不是素数。那么判断n是不是素数的算法就是:
(1)初始化整数m=2;
(2)如果m能够整除n,跳到步骤(4);否则跳到步骤(3);
(3)m=m+1;
(4)如果m与n相等,则n为素数;否则n不是素数

回答3:

//判断素数
#include "stdio.h"
#include "string.h"
int main()
{
int i,a;
printf("输入一个数:\n");
scanf("%d",&a);
if ( a<3 ) //小于3的都不是素数
{
printf("No!\n");
return 0;
}
for (i=2; i {
if (a%i == 0) //有整除情况就不是素数
{
printf("No!\n");
return 0;
}
}
printf("Yes!\n");
return 0;
}

回答4:

不大听得懂你的问题,不过判断素数的算法我可以说一下:
定义一个循环变量i,i从2开始变化到(int)sqrt(num)/*num的根号运算*/,
试着%num,如果结果是0,就可以输出不是,然后退出程序,用程序实现.如下:
#include "math.h"
main()
{
int num,i;
scanf("%d",&num);
for(i=2;i<=(int)sqrt(num);i++)
{ if (num%i==0) {printf("shi");return0}};
printf("bushi");
}

回答5:

20082级语言教程有这个例子,自己看