#include<bits/stdc++.h>
using namespace std;
bool prime(int n) {
for(int i=2; i<=sqrt(n); i++) {
if(n%i==0) {
return false;
}
}
return true;
}
int main() {
int a[101];
int n,s=0,r=0,t=1;
cin>>n;
string sum;
for(int i=1; i<=n; i++) {
cin>>s;
r=0;
t=1;
for(int j=s.size()-1; j>=0; j--) {
a[i]=a[i]+(s[j]-'0')*t;
t=t*2;
}
if(prime(a[i]))
s++;
}
cout<<s
return 0;
}
题目描述
小丽同学在编程中学到了二进制数的概念,她发现,有些二进制数,如果转为10进制,就是素数,小丽把这些数称为潜在的素数;比如2进制1101011,转为10进制后为107,就是素数。请编程帮小丽找出,哪些二进制数转为10进制后,是素数,计算出这样的数有多少个?
输入
第一行是一个整数n(10<=n<=100)
接下来n行,每行是一个30位以内的2进制数
输出
一个整数代表所有转为10进制后是素数的2进制数的个数