在三位自然数中有这样一些特点的数:
1)它们是素数;
2)它们中满足:十位数字是偶数,个位数字为3,如:223,283,383,443,463…….等。
求出在三位自然数的任意区间M ~N内所有满足上述条件的素数,并统计个数。
#include<bits/stdc++.h>
using namespace std;
bool check(int x){
int cnt=0;
for(int i=1;i<=x;i++)
if(x%i==0)
cnt++;
return cnt==2;
}
int main(){
int n,m;
cin>>n>>m;
int ans=0;
for(int i=n;i<=m;i++){
if(i%10!=3||i%10/10%2!=0)
continue;
if(check(i))
ans++;
}
cout<<ans;
return 0;
}
给你的思路,遍历M~N的之间的整数:(M<N)#代码细节可能需要修改,注意算法思路即可。
int i,k,sum=0;
for(k=M,k<N,k++)
{
if(x%10==3&&(x/10)%2==0)#满足条件2
{
for(i =2;i<N;i++)
{
if(x%i==0)
break;
}
if(i==N)#满足条件1
{sum++;}
}
}
#include <iostream>
using namespace std;
int isPrime(int n)
{
for (int i = 2; i <= n / 2; i++)
if (n % i == 0) return 0;
return 1;
}
int main()
{
int M, N;
cin >> M >> N;
int cnt = 0;
for (int i = 103; i < 999; i += 20) //十位每次加2,个位不变,就可以保证十位数字是偶数,个位数字为3
{
if (i >= M && i <= N && isPrime(i))
{ cout << i << endl; cnt++; }
}
cout << "数量:" << cnt;
return 0;
}
103 999
103
163
223
263
283
383
443
463
503
523
563
643
683
743
823
863
883
983
数量:18
#include<iostream>
#include<math.h>
using namespace std;
int isPrime(int x)
{//判断x是素数,ret=1则为真
int ret = 1;
int i;
if( x == 1 ||
(x%2 == 0 && x!=2))
ret = 0;
for(i=3;i<sqrt(x);i+=2){
if(x%i == 0){
ret = 0;
break;
}
}
return ret;
}
int method(int x)
{//判断x是否个位为3,十位是偶数,res=1则为真
int unit,ten,hundred;
int res = 0;
unit = x%10;
x = x/10;
ten = x%10;
x = x/10;
hundred = x%10;
if(unit == 3 && ten%2 == 0)
res = 1;
return res;
}
int main(){
int M,N;
int num=0;//计数
cin>>M>>N;
for(int i = M;i<N;i++){
if(method(i) == 1 && isPrime(i) == 1){
cout<<i<<" ";
num++;
if(num%10 == 0){//每10个数一换行
cout<<endl;
}
}
}
cout<<endl;
cout<<"数量="<<num<<endl;
return 0;
}