永发信息网

用C++求出所有的两位绝对素数?

答案:3  悬赏:30  手机版
解决时间 2021-07-19 04:13
  • 提问者网友:心如荒岛囚我终老
  • 2021-07-18 21:44

RT

一个素数 ,当他的数字位置对换以后仍为素数,这样的素数称为绝对素数。

编写一个程序,求出所有的两位绝对素数.

求大大帮我写个

那个 我们学的是C++面向对象程序设计 我还只学了一章 难的看不大懂~~

谢谢

最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-07-18 22:11
#include <iostream>
#include <math.h>
using std::cout;
int sushu(int num)
{
int i;
//for循环判断num是否是素数,
for(i=2;i<sqrt(static_cast <double>(num));i++){ //static_cast <double>(num) 把num强制转换为double类型
if(num%i==0) //分别用num对2,4,6,8....取余,余数不为0才为素数,如果等于0,返回false
return false;
}
return true; //余数不等于0,最后返回真
}
int main(void)
{
int i,j;
for(i=1; i<99; i++){
j=i/10+i%10*10; //交换两位数,如31,那么31/10=3,31%10*10=1*10,前者取整,后者取余
if(sushu(i)&&sushu(j)) //调用判断素数函数,分别判断i和j是否都为素数,如果都为真,则打印出来
cout<<i<<"\n";
}
return 0;
}
全部回答
  • 1楼网友:摆渡翁
  • 2021-07-19 00:25

if(num%i==0) //分别用num对2,4,6,8....取余,余数不为0才为素数,如果等于0,返回false

说明一下 这里解释错了一点,应该是num对2,3,4,5...sqrt(num)取余,大于sqrt(num)不必再判断,因为是sqrt(num)的平方数,结果与sqrt(num)相同!

  • 2楼网友:舊物识亽
  • 2021-07-18 23:19

#include<iostream> #include<math.h> using namespace std; bool isprime(int n){ int i; for(i=2;i<=sqrt(n);i++){ if(n%i==0) return false; } return true; } int main() { int i,j; cout<<"所有的两位绝对素数:"<<endl; for(i=10;i<100;i++){ j=(i%10)*10+i/10; if(isprime(i)&&isprime(j)) cout<<i<<" "; } cout<<endl; system("pause"); return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯