Einstein777 2022-07-30 16:52 采纳率: 77.8%
浏览 18
已结题

证明哥德巴赫猜想中的判断素数

证明哥德巴赫猜想
代码如下

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int gede(int s);
    int a;
    cout<<"请输入一个大于6的偶数:"<<endl;
    cin>>a;
    gede(a);
    return 0;    
 } 
int gede(int s)
{
    int prime(int x);
    int i,j; 
    for(i=2;i<s;i++)
    {
        for(j=2;j<s;j++)
        {
            if(prime(i)&&prime(j))
                if(s==i+j&&i<9)
                    cout<<s<<"="<<i<<"+"<<j<<endl;    
        }
    }
}
int prime(int x)     //判断是否为素数 
{
    int i,k=sqrt(x);
    for(i=2;i<=k;i++)
        if(x%i==0)break;
    if(i>k) 
        return 1;
    else
        return 0;
}

在求判断是否为素数的函数中 为什么要判断i>k,i应该不可能大于k吧?
而且如果去掉这段代码,一样可以正常运行

    if(i>k) 
        return 1;
    else
        return 0;

还有就是这个判断素数的方法原理是什么?

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-07-30 17:19
    关注

    i>k表示上面的for循环全部执行结束了,循环结束条件就是 i>k
    当i>k时,表明for循环执行过程中没有满足if条件的i值,没有break跳出循环,所以就说明2到k的所有值都不能整除x,所以x是素数,返回1。
    如果循环中有数能够整除x,那么就会break跳出循环,此时i值肯定不大于k的,那么return 0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 创建了问题 7月30日

悬赏问题

  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码