c++ - C++程序显示两个区间之间的数字检查一个数字是否可以表示为两个素数之和
问题描述
我写了一个程序来显示两个区间之间的数字并检查是否可以表示为两个素数之和
这是我的代码
//============================================================================================
// Check whether and display a number between two intervals can be expressed as 2 prime number
//============================================================================================
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int checkPrime (int);
int main()
{
int n1 , n2 , i , j;
bool flag = false;
cout << "Enter two number to check:" << endl;
cin >> n1 >> n2 ;
for (i = n1 ; i <= n2 ; i++)
{
for (j = 2 ; j <= i/2 ; j++ )
{
if(checkPrime (j) && checkPrime (i-j))
{
cout << "Number " << i << " equal sum of two prime number " << j << " + " << i - j << endl;
flag = true;
}
}
if (flag == false)
{
cout << "Number " << i << " can't epress to sum of two prime number " << endl;
}
}
system ("pause");
return 0;
}
int checkPrime (int n)
{
bool flag = true;
for (int i = 2; i <= n/2; i++)
{
if (n % i == 0)
{
flag = false;
break;
}
}
return flag;
}
输出 输入两个数字进行检查:
1
12
Number 1 can't epress to sum of two prime number
Number 2 can't epress to sum of two prime number
Number 3 can't epress to sum of two prime number
Number 4 equal sum of two prime number 2 + 2
Number 5 equal sum of two prime number 2 + 3
Number 6 equal sum of two prime number 3 + 3
Number 7 equal sum of two prime number 2 + 5
Number 8 equal sum of two prime number 3 + 5
Number 9 equal sum of two prime number 2 + 7
Number 10 equal sum of two prime number 3 + 7
Number 10 equal sum of two prime number 5 + 5
Number 12 equal sum of two prime number 5 + 7
11 号不见了 :-s 我不知道为什么 :( 请帮我修复它
解决方案
您必须在每个循环中重置标志,否则一旦设置了true
值,将永远不会达到此条件if (flag == false)
。
for (i = n1 ; i <= n2 ; i++)
{
flag = false; /* Reset the flag */
for (j = 2 ; j <= i/2 ; j++ )
{
if(checkPrime (j) && checkPrime (i-j))
{
cout << "Number " << i << " equal sum of two prime number " << j << " + " << i - j << endl;
flag = true;
}
}
if (flag == false)
{
cout << "Number " << i << " can't epress to sum of two prime number " << endl;
}
}
推荐阅读
- selenium - 针对 AWS Fargate selenium hub 的量角器/Selenium ETIMEDOUT 错误
- ruby-on-rails - 访问显示错误值的嵌套 ActionController::Parameters
- multithreading - 连续两次调用 pthread_join()。在第一个线程终止之前,第二个调用甚至不应该开始吗?
- python - 如何使用 python 获取用户在 facebook 上发布的所有帖子
- java - 如何让一个控制器正确调用第二个控制器方法来更新第二个控制器 fxml/node?
- android - 如何修复“未找到改造注释。(参数#2)”?
- php - 如何在magento 2中操纵产品价格?
- r - 从 R 的 b 样条 bs() 函数中找到分段多项式系数
- postgresql - 将函数参数传递给动态查询字符串
- android - 为什么调用 JNI 回调时我的 Android 测试会崩溃?