一个数只有三个约数的特征

一个数只有三个约数的特征:

约数都是成对出现的,有奇数个约数说明有一对约数是相同的;
也就是说这个数是平方数,只有三个约数说明这个数还得是素数(质数)的平方;
平方小于5000的素数共有19个,因此1到5000中只有三个约数的数有19个。
相关例题: B. T-primes
代码:
#include<iostream>
#include<cstdio>
#include<math.h>
using namespace std;

inline int slove(long long a)
{
    int j;
     int b=sqrt(a);
    for(j=2;j*j<=b;j++)
        if(b%j==0)   return 0;
    return (long long)b*b==a;
}

int main()
{
    int n,j;
    scanf("%d",&n);
    long long a;
   while(n--){
         scanf("%I64d",&a);
         if(slove(a)&&a>1)
            puts("YES");
         else
            puts("NO");
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 11:42:28

一个数只有三个约数的特征的相关文章

数组中出现一次的两个数(三个数)&amp; 求最后一位bit为1

对于两个数,对于结果中,剩余bit1来异或区分. 下面的解法,非常精简: int lastBitOf1(int number) { return number & ~(number - 1); } void getTwoUnique(vector<int>::iterator begin, vector<int>::iterator end, vector<int>& unique) { int xorResult = 0; for(vector<

【遥感专题系列】微波遥感(三、SAR图像特征)

SAR是主动式侧视雷达系统,且成像几何属于斜距投影类型.因此SAR图像与光学图像在成像机理.几何特征.辐射特征等方面都有较大的区别.在进行SAR图像处理和应用前,需要了解SAR图像的基本特征. 本文主要包括: 成像散射特征 SAR几何特征 SAR图像特征   1.成像散射特征 SAR图像上的信息是地物目标对雷达波束的反映,主要是地物目标的后向散射形成的图像信息.反映SAR图像信息的灰度值主要受后向散射的影响,而影响后向散射的主要因素分为两大类: 雷达系统的工作参数:主要包括雷达传感器的工作波长.

(2019.3.15)if语句;从键盘读入3个数;三个数进行大小排序

import java.util.Scanner;class TestIf3{    public static void main(String[] args){        //1.从键盘获取三个数        Scanner s = new Scanner(System.in);        System.out.println("请输入第一个数:");        int num1 = s.nextInt();        System.out.println(&qu

写一个函数返回参数二进制中 1 的个数(三种方法)

1.运用了除法,取余方式递推出结构2.运用右移符(>>)运算3.利用算术与(&)运算 三种方法效率越来越高,减少成本 #include<stdio.h> int Number1(int n) { int k; int count=0; while (n > 0) { k = n % 2; n /= 2; if (1 == k) { count++; } } return count; } int Number2(int n) { int count = 0; whil

【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)

输入一个整数,输出该数二进制表示中1的个数.如输入32,输出1. 代码实现: 方法1:与运算 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; int FindOneNumber(unsigned int num) {     int numberofOne = 0;     while (num)     {         num = num & (num - 1);         

输出一个数的二进制序列中1的个数(三种方法)

由于这个数有可能是负数,负数在计算机中以补码的方式存储,要求负数的补码中1的个数依然可以正确输出,方法如下: 1.定义这个数的变量类型为无符号整型(unsigned int) 代码为 include<stdio.h>int count_one_bits(unsigned value){int count=0;while(value){   if(value%2==1)   {count++;   }   value=value/2; }return count;}int main(){unsi

对两个数求解对大公约数

对于这个最大公约数的球阀有两种, 第一种是: 自己手写规律: int lcm(int a,int b) { int max = (a >= b?a:b),min = (a < b?a:b),i; for(i = 1;;++i) { if((max * i) % min == 0) { return (max * i); } } } 第二种是: int LCM(int a, int b) { return a*b/GCD(a,b); } 意思就是求解最大公约数就是求两个数的乘积再去除两个数的最小

交换两个数的三种方法

// demo4.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void swap1(int &a,int &b) //使用引用 { int temp; temp=a; a=b; b=temp; } void swap2(int &a,int &b) //不依靠外部变量 可能会越界 { a=a+b; b=a-b; a=a

BZOJ 3994 [SDOI2015]约数个数和 (神定理+莫比乌斯反演)

3994: [SDOI2015]约数个数和 Time Limit: 20 Sec  Memory Limit:128 MB Submit: 239  Solved: 176 [Submit][Status][Discuss] Description 设d(x)为x的约数个数,给定N.M,求   Input 输入文件包含多组测试数据. 第一行,一个整数T,表示测试数据的组数. 接下来的T行,每行两个整数N.M. Output T行,每行一个整数,表示你所求的答案. Sample Input 2 7