解题思路:
素数指在一个大于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 条评论

Solotravel 6年前 回复TA
@kelen exit(0)换成break, 在main()函数结束前加 return 0;
Solotravel 6年前 回复TA
@Solotravel 小于2的数也不是素数
Solotravel 6年前 回复TA
#include<stdio.h>
int IsPrime(int n);

int main()
{
	int num;
	scanf("%d",&num);
	if (IsPrime(num))printf("prime\n");
	else printf("not prime\n");
	return 0;
}

int IsPrime(int n)
{
	int i;
	if(n==2)return 1;
	else if(n<2||n%2==0)return 0; //除2以外的偶数都不是素数
	else
	{
		for(i=3;i<=n/2;i+=2)//奇数中,能被整除的数的最大约数都不大于它的一半 ,(除了它本身),奇数只能被奇数整除
		{
			if (n%i==0) return 0;
		}
	}
	return 1;
}
kelen 6年前 回复TA
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int i,f,number;
	scanf("%d",&number);
	for(i=2;i<number;i++)
	{
		if (number%i==0)
		{
			printf("not prime");
			exit(0);
		}
		else f=1;
	}
	if (f=1) printf("prime");
}
我这样写可以吗
mysky 6年前 回复TA
这种没有一点新意的解题也能评为优质?
Christ 6年前 回复TA
@Christ 突然发现不符合第一个if的数进去没结果……不过还是通过了
Christ 6年前 回复TA
我写了一个包含子函数的供大家参考,请多多指教

#include<stdio.h>

int prime(int n, int i, int c)
{
	if (n > 1 && n == (int)n)	
	{
		c = 0;
		for (i = 2; i < n; i++)
		{
			if (n % i == 0)
			{
				c += 1;
				printf("not prime");
				break;
			}
		}
		if (c == 0)
			printf("prime");
	}
	return 0;
}

int main()
{
	int n, i, c;
	scanf("%d", &n);
	return prime(n, i, c);
}



链接:http://www.dotcpp.com/blog/8936.html
寡人有疾 6年前 回复TA
题目是说写一个函数,判断是否素数。你这个是只有一个main函数啊
Manchester 6年前 回复TA
@风皇 break 出循环后,不加判断的话直接输出prim就不对了
风皇 6年前 回复TA
大佬,第20行为什么还要再判断i==number啊??剩下的不都是素数吗?