瞎折腾


私信TA

用户名:chenbin

访问量:61055

签 名:

等  级
排  名 72
经  验 9734
参赛次数 0
文章发表 74
年  龄 0
在职情况 学生
学  校 中南大学
专  业

  自我简介:

解题思路:
题目要求是让我们写两个函数,一个是判断素数函数judge,另一个是主函数main;在judge中判断传过来的实参m要先判断是否是大于等于2的数,只有m>=2才可以判定它是不是素数,所以说输入的数要符合要求。接下来就是如何判断是素数,素数是指除了1和本身以外不能再被其他数整除的数,于是利用取余法,设for(i=2;i<m;i++) if(m%i==0),则不是素数,break终止循环;否则如果是素数,也要break终止循环。



注意事项:
无论是判断得到是素数或者不是素数,只要得到结果,就立即break终止循环。




参考代码:

#include<stdio.h>

int judge(int m)

{

    int i;

    if(m>=2)

    {

        for(i=2;i<m;i++)

        {

            if(m%i==0)

            {

                printf("not prime\n");

                break;

            }

            else

            {    

                printf("prime\n");

                break;

            }

        }

    }

    return 0;

}

int main()

{

    int m;

    scanf("%d",&m);

    judge(m);

    return 0;

}


 

0.0分

3 人评分

  评论区

两个问题:第一,第一个if语句不应该包含等于2,否则2这个数通过循环出来被判定为not prime,错误;第二,循环语句中你的判定方式只排除了那些非素数中含有因子为二的非素数,简单点说你只判断了一个数是否含有2这个因子,错误。
2023-01-12 23:37:54
这代码是有问题的,在for里的else中,只能够判断是不是奇数而不是素数,仅仅是用i=2来进行判断,运行输入15这种奇数也是输出的prime
2022-11-22 16:40:28
#include<stdio.h>
#include<math.h>
void panduan(int x);
int main()
{
	int n;
	scanf("%d",&n);
	panduan(n);
	return 0;
}
void panduan(int x)
{
	int tag=0;
	for(int i=2;i<=sqrt(x);i++)
		if(x%i==0)
			tag++;
	if(tag==0)
		printf("prime\n");
	else
		printf("not prime\n");
}
2022-11-21 18:53:47
#include <stdio.h>
int judge(int m)
{
	int i;
	if(m==2)
	{
		printf("prime\n");
	}
	else if(m>2)
	{
		for(i=2;i<m;i++)
		{
			if(m%i==0)
			{
				printf("not prime\n");
				break;
			}
			else
			{
				printf("prime\n");
				break;
			}
		}
	}
}
int main()
{
	int m;
	scanf("%d",&m);
	judge(m);
	return 0;
}
再来个if else就好了。
2022-11-12 16:41:33
2的时候有问题
2019-07-17 17:05:12
  • «
  • 1
  • »