为了账号安全,请及时绑定邮箱和手机立即绑定

查找一个大于m的最小素数。例如·:输入4,输出的结果应该是5。还请各位大神指出错误之处。另外中间两个if函数中可不可以写(m%i==0)和(m==i)。还望大神们不吝指教,谢谢!

#include<stdio.h>
int main()
{	                         //查找一个大于等于输入的正整数m的最小素数
    int m,i;
    printf("请输入一个正整数m:");
    scanf("%d",&m);	          //随机输入一个正整数
LOOP:for(i=1;i<=m;i++)            //从1开始查找是否有能被m整除的数
    {
    	if(m%i==0&&m!=i)          //成立则代表m不是素数
    	{
    	m++;
    	goto LOOP;		  //m加一后跳到loop处继续循环
    	}
    	if(m%i==0&&m==i)	  //成立则表示m是要找的数
    	{
    	printf("%d\n",m);
    	break;		          //跳出循环
    	}
    }
    	return 0;
}


正在回答

1 回答

既然题目要求是大于m的,就应该从m+1开始寻找,且,寻找素数的方法不是很好。
如下是鄙人的算法:

#include<stdio.h>
int main()
{                           
//查找一个大于等于输入的正整数m的最小素数
    int m,i,j;
    int temp=0;  //检测
    printf("请输入一个正整数m:");
    scanf("%d",&m);          
//随机输入一个正整数
for( i=m+1; ; i++ )
//从m+1开始寻找
    {
    for(j=2; j < i;j++)
    {
    if(!(i%j) ) temp ++;
    //判断是否为素数
    }
    if( !(temp) )
    {
    printf("符合条件的数为:%d\n",i);
    break;
    }
    }
        return 0;
}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

查找一个大于m的最小素数。例如·:输入4,输出的结果应该是5。还请各位大神指出错误之处。另外中间两个if函数中可不可以写(m%i==0)和(m==i)。还望大神们不吝指教,谢谢!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信