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 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计