📄 sp.cpp
字号:
#include<iostream.h>
#include <cassert>
#include <math.h>
#define MAX_NUM 99
//const int MAX_NUM=99;
//判断一个数是否是素数
bool check(int n)
{
for(int i=2;i<n;i++)
if(n%i==0)
return false;
return true;
}
//检查条件一:是否满足
bool by_condition_1(int x, int y)
{
int sum = x+y;
if(sum == 4)
return false;
for(int i=2; i<=sum/2; i++)
{
if(check(i) &&check(sum -i))
return false;
}
return true;
}
//检查条件二:是否满足
bool by_condition_2(int x, int y)
{
// assert(x<=y);
int product =x*y;
//统计满足条件1的分解可能
int count_condition_1 =0;
for(int i =2; i<=sqrt(product); i++)
{
if(product %i == 0 )
if((product/i) <= MAX_NUM)
if(by_condition_1(i,product/i))
if(++count_condition_1 >=2)
break;
}
if( count_condition_1 == 1)
return true;
return false;
}
//检查条件三:是否满足
bool by_condition_3(int x, int y)
{
int sum = x+y;
//统计所有满足条件2的拆分可能
int count_condition_2 = 0;
for(int i=2; i<=sum/2; i++)
{
if(by_condition_2(i,sum-i))
if(++count_condition_2 >= 2)
break;
}
if(count_condition_2 == 1)
return true;
return false;
}
int main()
{
int s[100];
int n=0;
int m1=0,m2;
for(int i=2;i<100;i++)
for(int j=2;j<i;j++)
if(by_condition_1(i,j))
{
m2=i+j;
if(m2!=m1)
s[n++]=m2;
m1=m2;
break;
}
cout<<"第一句话结果:(s剩余数)"<<endl;
for(int k=0;k<n;k++)
cout<<s[k]<<" ";
cout<<endl;
for(int x=2;x<100;x++)
for(int y=2;y<x;y++)
if( by_condition_1(x,y) &&
by_condition_2(x,y) &&
by_condition_3(x,y))
{
cout<<"******通过以上博弈搜索可得,在满足条件一,二,三的前提下:******"<<endl;
cout<<"S先生得到的两个数的和为:SUM = "<<x+y<<endl;
cout<<"P先生得到的两个数的积为:MUL = "<<x*y<<endl;
cout<<"X = "<<x<<" , "<<"Y = "<<y<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -