从键盘输入十个正整数,找出最大的合数(合数,除了能被1和本身整除外,还能被其他数(0除外)整除的数),如果10个正整数没有合数,输出无。
因为合数不好找,所以可以转换成筛出其中的质数,再将其赋值成极小值,最后循环找出最大的合数
代码:
#include<bits/stdc++.h>//万能头文件
using namespace std;
bool check_prime(int x){//判断x是否为质数
if(x==0||x==1)return false;//0和1单独判断
for(int i=2;i<(int)sqrt(x);i++){//不必枚举到x,到根号x就行了
if(x%i==0)return false;//如果x整除i,说明x不是质数
}
return true;
}
int main(){
int a[10],maxx=0;//maxx为最大的合数
for(int i=0;i<10;i++)cin>>a[i];
for(int i=0;i<10;i++)
if(check_prime(a[i]))a[i]=-1000;//找到质数并赋为极小值
for(int i=0;i<10;i++)循环找出最大合数
if(a[i]>maxx)maxx=a[i];
cout<<maxx;
return 0;
}