解题思路:
素数指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

1.输入一个数number,若number为大于一的自然数,判断它是否为素数;

2.number为大于一的小数,不是素数;

3.number小于等于1,不是素数;


参考代码:

#include <stdio.h>
 
int main()
{
    double    number;
    int    i;
    scanf( "%lf", &number );
 
    if ( number > 1 && number == (int) number ) //大于1的自然数
    {
        for ( i = 2; i < number; i++ )
        {
            if ( (int) number % i == 0 )
            {
                printf( "not prime" );
                break;
            }
        }
        if ( i == number )
            printf( "prime" );
    }
    if ( number>1&&(int) number != number )  //大于一的小数
        printf( "not prime" );
 
    if ( number <= 1 )   //小于等于一的数
        printf( "not prime" );
 
    return(0);
}


点赞(23)
 

0.0分

35 人评分

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

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

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

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

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

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

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

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

评论列表 共有 60 条评论

Nvemiy 3年前 回复TA
@EasonXin 为什么这个判断不了2是不是素数,是对的。。。。。。。
Nvemiy 3年前 回复TA
为什么是答案错误50%,请各路大神指导
#include<stdio.h>
void f(int x)
{
	int i;
	for(i=2;i<x;i++)
	{
		if(x%i==0)
		{
			break;
		}
	}
	if(i==x)
	{
		printf("prime");
	}else
	{
		printf("no prime");
	}
}
int main()
{
	int x;
	scanf("%d",&x);	
	f(x);
	return 0;
}
EasonXin 3年前 回复TA
上面的解题有问题只对了%50
负数和小数那里有点奇怪
大家仅供参考
%100正确代码如下
#include<stdio.h> 
void as(int a)
{
	int i;
	for(i=2;i<a;i++)
	{
    	if(a%i==0)
    	{
    	printf("not prime");
    	break;
    }
 	else 
	{
	printf("prime");
	break;
	}
}
}


int main()
{
	int i,n;
	scanf("%d",&n);
	as(n);
	return 0;
}
怪兽兽 3年前 回复TA
#include <stdio.h>

int isPrime(int m){
    int i = m-1;
    while (i != 1){
        if(m%i == 0){
            return printf("not prime\n");
            break;
        }
        i--;
    }
    return printf("prime\n");
}
int main(int argc, char* argv[]){
    int a;
    scanf("%d", &a);
    isPrime(a);
    return 0;
}
浅梦 3年前 回复TA
#include <stdio.h>
#include <math.h>
int main()
{
	int m,i,n;
	scanf("%d",&m);
	for(i=2;i<m;i++)
	{
		n=m%i;
		if(n==0)
		{
			printf("not prime");
			break;
		}	
	}
	if(n!=0)
	{
		printf("prime");
	}
}
君以泽 4年前 回复TA
真细
荒半 4年前 回复TA
#include<stdio.h> 
void as(int a)
{
	int i;
	for(i=2;i<a;i++)
	{
    	if(a%i==0)
    	{
    	printf("not prime");
    	break;
    }
 	else 
	{
	printf("prime");
	break;
	}
}
}


int main()
{
	int i,j,k,n;
	scanf("%d",&n);
	as(n);
	return 0;
}
Cauchy 4年前 回复TA
@别扒拉我 输出错误 "not prime" 不是 no prime
Cauchy 4年前 回复TA
#include <stdio.h>
void isPrime(int num)
{
	int i;
	int flag=1;  //是素数 
	
	for(i=2;i<=num/2;i++)
	{
		if(num%i==0)
		{
			flag=0;
			printf("not prime");
			break;
		}
	}
	
	if(flag) 
		printf("prime");
}
int main()
{
	int num;
	scanf("%d",&num);
	isPrime(num);
	return 0;
}
郭卉 4年前 回复TA
请问我的答案为什么错误50%
#include<stdio.h>
#include<math.h>
int main()
{
	int x;
	void sushu(int a);
	scanf("%d",&x);
	sushu(x);
	return 0;
}

void sushu(int a)
{
	int i;
	double temp;
	temp=sqrt(a);
	for(i=2;i<=temp;i++)
	{
		if(a%i==0)
		{
			printf("not prime\n");
		}
	}
	if(i>temp)
	{
		printf("prime\n");
	}
}