解题思路:

素数:除了1和它本身以外不再有其他因数。所以我们只需要设置一个循环,让输入的这个数除以2~x的数,如果有可以整除的数,则不是素数,否则,是素数。

注意事项:

参考代码:

#include <stdio.h>
int main()
{
    int x;
    int sushu(int);
    scanf("%d",&x);
    sushu(x);
    return 0;
}
int sushu(int x)
{
    int a=0,i;//这里a应该赋初值0
    for(i=2; i<x; i++)//这里应该注意i从2开始,条件是小于x
    {
        if(x%i==0)
            a++;
    }
    if(a==0)
        printf("prime");
    else
        printf("not prime");
}

代码简单易懂,觉得可以的不妨点个赞呀!

点赞(3)
 

0.0分

13 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 13 条评论

阿斯嘉德人民 3年前 回复TA
@HJH 我给第一个if语句,在作者的基础上加了x!=1的条件
阿斯嘉德人民 3年前 回复TA
@HJH #include <stdio.h> int main() {     int x;     int sushu(int);     scanf("%d",&x);     sushu(x);     return 0; } int sushu(int x) {     int a=0,i;//这里a应该赋初值0     for(i=2; i<x; i++)//这里应该注意i从2开始,条件是小于x     {         if(x%i==0)             a++;     }     if(a==0&&x!=1)         printf("prime");     else         printf("not prime"); }
Debug 4年前 回复TA
@xhm0974 请问上面代码有什么不对吗?main函数第二行不是声明了?直接在判断函数里面输出不可以吗?
Debug 4年前 回复TA
@sephirok @sephirok main函数里面第二行不就是函数声明吗?
Debug 4年前 回复TA
@sephirok main函数里面不是声明了吗?
仰泳的鱼 4年前 回复TA
#include <stdio.h>

int main()
{
	void IsPrime(int x); //自定义函数声明 
	
	int num;

	scanf("%d",&num);    //键盘输入需要判断的数 
	
    IsPrime(num);        //调用自定义函数 
    
	return 0;
}

void IsPrime(int x)      //自定义判断素数函数 
{
	int i,k=0;           
	
	for(i=2;i<x;i++)     //如果被整除或此数为1说明不是素数
	{
		if(x % i == 0 || x == 1)	  
		{
			k ++;        //使k的初始值发生变化 			
		}
	}
	
	if(k==0)             //如果k初值没变化说明没被整除 
	{
		printf("prime"); //所以是素数 
	}
	else
	{
		printf("not prime");
	}
	
}
阿琛 4年前 回复TA
这个好像不能判断1是不是素数
HJH 5年前 回复TA
1不是素数啊,你这个运行的话算的1是素数的。
下面这个我写的,就可以运行1不是素数。
#include <stdio.h>

int main()
{ 
	int a;
	int pan(int n);
	scanf("%d", &a);
	pan(a);
	return 0;
}
int pan(int n)
{
	int i, index = 0;
	for(i = 2;i < n;i++)
		if(n % i == 0) index++;
	if(n == 1){
		printf("not prime");goto FINISH;
	}
	if(index == 0) printf("prime");
	else printf("not prime");
	
	FINISH:return 0;
}
本人小白一个,望不吝赐教。
xhm0974 5年前 回复TA
第一没有用前置声明,第二没用指针使函数返回值为0,所以这个程序并不能呢表达素数
#include<stdio.h>
int f(int a);
int main(void)
{
	int a,t;
	scanf("%d", &a);
    t = f(a);
   if (t == 2)
   printf("prime\n");
   if (t != 2)
	   printf("not prime\n");
	return 0;
}
int f(int a)
{
	int i,t=0;
	for (i = 1; i <= a; i++)
	{
		if (a%i == 0)
			t++;
	}
	return t;
}
这个是可以在没有指针的情况下运行的,我试过了可以通过
sephirok 5年前 回复TA
@sephirok @yiyanghuakai 原因我也没有去了解,但在vc++上,这段代码确实可以正确运行