给定一个四位数,若各位上的数字之各为质数,就称它为和质数。
如:3185 的各位数字之和 3+1+8+5=17 ,所以 3185 就是一个和质数;
8264 的各数数字之和 8+2+6+4=20 ,所以 8264 不是和质数。
编程统计出区间 [a,b] 上的和质数个数。
输入文件:一行二个正整数 a b ( 1001 ≤ a ≤ b ≤ 9999 )
输出文件:一个数,表示区间内的和质数个数
输入样例:3180 3190
输出样例:4
样例说明:在 [3180,3190] 区间各数的 4 个数字和为
12 13 14 15 16 17 18 19 20 21 13
共有 4 个和是质数
C++ 编程统计出区间 [a,b] 上的和质数个数
答案:3 悬赏:70
解决时间 2021-02-03 01:38
- 提问者网友:冷场帝
- 2021-02-02 08:27
最佳答案
- 二级知识专家网友:最后战士
- 2021-02-02 09:58
#include "stdafx.h"
#include <iostream>
using namespace std;
bool prime(int n){
int i;
if(n<2) return false;
if(n==2 || n==3) return true;
if(!(n%2)) return false;
for(i=3;i<n;i+=2)
if(!(n%i)) return false;
return true;
}
void main(void){
int a,b,i,n,sum;
char str[12]="",*ptmp;
cout << "Type a & b(a<b)...\n";
cin >> a >> b;
for(sum=0,i=a,b++;i<b;i++){
for(n=0,itoa(i,str,10),ptmp=str;*ptmp;n+=*ptmp++ -'0');
if(prime(n)) sum++;
}
cout << sum << endl;
}
#include <iostream>
using namespace std;
bool prime(int n){
int i;
if(n<2) return false;
if(n==2 || n==3) return true;
if(!(n%2)) return false;
for(i=3;i<n;i+=2)
if(!(n%i)) return false;
return true;
}
void main(void){
int a,b,i,n,sum;
char str[12]="",*ptmp;
cout << "Type a & b(a<b)...\n";
cin >> a >> b;
for(sum=0,i=a,b++;i<b;i++){
for(n=0,itoa(i,str,10),ptmp=str;*ptmp;n+=*ptmp++ -'0');
if(prime(n)) sum++;
}
cout << sum << endl;
}
全部回答
- 1楼网友:為→妳鎖鈊
- 2021-02-02 12:07
#include<iostream>
using namespace std;
int use[10010];//use[x]等于0,表示x是质数
void init()
{
for (int i = 2;i<10010;i++)
{
if (!use[i])
{
for (int j = i * i;j < 10010;j+=i)
{
use[j] = 1;
}
}
}
}
int check(int x)
{
int res = 0;
while(x)
{
res += x % 10;
x /= 10;
}
return !use[res];
}
int main()
{
int a, b;
init();
while(cin>>a>>b)
{
int cnt = 0;
for (;a<=b;a++)
{
cnt += check(a);
}
cout<<cnt<<endl;
}
}
- 2楼网友:一身浪痞味
- 2021-02-02 11:36
#include
using namespace std;
int use[10010];//use[x]等于0,表示x是质数
void init()
{
for (int i = 2;i<10010;i++)
{
if (!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯