问题标题: 酷町堂:3865 寻找最大的质数(要豆的快来!)

0
0
已解决
董子墨
董子墨
中级天翼
中级天翼

传送闸门

60分代码:

#include<iostream>
#include<cmath>
using namespace std;
int ejz(int n){
	int m=0,i=0;
	while(n){
		m+=(n%10)*pow(2,i);
		n/=10;
		i++;
	}
	return m;
}
int main(){
	long long n,h,flag;
	int m;
	cin>>n;
	m=ejz(n);
	while(m--){
		flag=1;
		for(int i=2;i*i<=m;i++)
			if(m%i==0)flag=0;
		if(flag==1){
			cout<<m; 
			break;
		}
	} 
	return 0;
} 

求大佬帮助

董子墨在2019-09-15 20:31:51追加了内容

@包涵宇 

董子墨在2019-09-16 16:39:59追加了内容

改了一下,80分

#include<iostream>
#include<cmath>
using namespace std;
int ejz(string n){
	int m=0;
	for(int i=0;i<n.size();i++)
		m+=pow(2,n.size()-1-i)*(n[i]-'0');
	return m;
}
int main(){
	string n;
	int flag;
	int m;
	cin>>n;
	m=ejz(n);
	while(m--){
		flag=1;
		for(int i=2;i*i<=m;i++)
			if(m%i==0)flag=0;
		if(flag==1){
			cout<<m; 
			break;
		}
	} 
	return 0;
} 

 

董子墨在2019-09-16 16:45:15追加了内容

请说出我错误的地方,我不要(整段)代码!!!,发布整段代码的全部举报!!!


0
已采纳
鲍欣妍
鲍欣妍
修练者
修练者

你好@董子墨 这道题我觉得并不需要函数哦!

第一步:定义(这个我相信你一定是会的)

2:while(n)
    {
        sum+=n%10*pow(2,t++);
        n/=10;
    }

3:for(int j=sum;j>=2;j--) 
    {
        int f=1;
        for(int i=2;i<=sqrt(j);i++)
        {
            if(j%i==0)
            {
                f=0;
                break;
            }
        }
        if(f)
        {
            cout<<j;
            return 0;
        }
    }

这个代码就这么简单

0
我要回答